Revert "Revert "Remove vendored libjuju""
Major code clean-up, approved by TSC

This reverts commit e2051cca7dac12aa09f6ed33555dcc4548c4b52b.

Change-Id: I567a594bebfe56e31f68df92a828839a56948223
diff --git a/Jenkinsfile b/Jenkinsfile
index ed9e879..e384cbd 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,3 +1,18 @@
+/*
+  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.
+*/
+
 properties([
     parameters([
         string(defaultValue: env.BRANCH_NAME, description: '', name: 'GERRIT_BRANCH'),
diff --git a/juju b/juju
deleted file mode 120000
index 1d37c18..0000000
--- a/juju
+++ /dev/null
@@ -1 +0,0 @@
-modules/libjuju/juju
\ No newline at end of file
diff --git a/modules/libjuju/.gitignore b/modules/libjuju/.gitignore
deleted file mode 100644
index 6d00fec..0000000
--- a/modules/libjuju/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.sw[mnop]
-.venv/
-*.pyc
-*.py~
-docs/_build/
-__pycache__/
-.tox/
-*.egg-info/
-.cache/
-.\#*
-dist/
-dev/
-.pytest_cache
-pytestdebug.log
-.vscode/
diff --git a/modules/libjuju/.travis.yml b/modules/libjuju/.travis.yml
deleted file mode 100644
index 5edfef5..0000000
--- a/modules/libjuju/.travis.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-dist: xenial
-sudo: required
-language: python
-cache: pip
-before_install:
-  - if [[ $TRAVIS_PYTHON_VERSION == '3.6' ]]; then sudo add-apt-repository -y ppa:jonathonf/python-3.6; fi
-  - if [[ $TRAVIS_PYTHON_VERSION == '3.7-dev' ]]; then sudo add-apt-repository -y ppa:deadsnakes/ppa; fi
-  - sudo apt-get update -q
-  - sudo apt-get remove -qy lxd lxd-client
-  - sudo apt-get install snapd libsodium-dev -y
-install:
-  - sudo snap install lxd || true  # ignore failures so that unit tests will still run, at least
-  - sudo sh -c 'echo PATH=/snap/bin:$PATH >> /etc/environment';
-  - sudo snap install jq || true
-  - sudo snap install juju --classic --$JUJU_CHANNEL || true
-  - sudo snap install juju-wait --classic || true
-  - pip install tox-travis
-env:
-  global: >
-    TEST_AGENTS='{"agents":[{"url":"https://api.staging.jujucharms.com/identity","username":"libjuju-ci@yellow"}],"key":{"private":"88OOCxIHQNguRG7zFg2y2Hx5Ob0SeVKKBRnjyehverc=","public":"fDn20+5FGyN2hYO7z0rFUyoHGUnfrleslUNtoYsjNSs="}}'
-    PATH="/snap/bin:$PATH"
-
-matrix:
-  include:
-  - python: 3.6
-    env: JUJU_CHANNEL=edge
-  - python: 3.6
-    env: JUJU_CHANNEL=stable
-  - python: 3.7-dev
-    env: JUJU_CHANNEL=stable
-  - python: 3.7-dev
-    env: JUJU_CHANNEL=edge
-before_script:
-  # Run lint before performing more expensive operations (fail fast/early)
-  - tox -e lint
-
-  # init lxd for tests
-  - sudo lxd waitready --timeout 30
-  - sudo chmod 666 /var/snap/lxd/common/lxd/unix.socket
-  - lxd init --auto --network-address='[::]' --network-port=8443 --storage-backend=dir
-
-  # Horrible workaround to LP Bug #1738614
-  - sudo mkdir /var/snap/lxd/common/lxd/storage-pools/juju-zfs
-  - lxc storage create juju-zfs dir source=/var/snap/lxd/common/lxd/storage-pools/juju-zfs
-
-script:
-  - juju bootstrap localhost test --config 'identity-url=https://api.staging.jujucharms.com/identity' --config 'allow-model-access=true'
-  - tox -e py3,integration,serial
diff --git a/modules/libjuju/CONTRIBUTORS b/modules/libjuju/CONTRIBUTORS
deleted file mode 100644
index 3895eaa..0000000
--- a/modules/libjuju/CONTRIBUTORS
+++ /dev/null
@@ -1,4 +0,0 @@
-Benjamin Saller
-Tim Van Steenburgh
-Cory Johns
-Pete VanderGiessen
diff --git a/modules/libjuju/LICENSE b/modules/libjuju/LICENSE
deleted file mode 100644
index 8dada3e..0000000
--- a/modules/libjuju/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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 --git a/modules/libjuju/MANIFEST.in b/modules/libjuju/MANIFEST.in
deleted file mode 100644
index c14d3fc..0000000
--- a/modules/libjuju/MANIFEST.in
+++ /dev/null
@@ -1,5 +0,0 @@
-include *.py CONTRIBUTORS LICENSE README.rst VERSION
-recursive-include juju *.py
-recursive-include examples *.py
-recursive-include docs *.rst
-exclude Makefile
diff --git a/modules/libjuju/Makefile b/modules/libjuju/Makefile
deleted file mode 100644
index 38dcc11..0000000
--- a/modules/libjuju/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-BIN := .tox/py3/bin
-PY := $(BIN)/python
-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: .tox
-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
-
-.PHONY: lint
-lint:
-	tox -e lint --notest
-
-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 fetch --tags
-	rm dist/*.tar.gz
-	$(PY) setup.py sdist
-	$(BIN)/twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
-	git tag ${VERSION}
-	git push --tags
-
-upload: release
-
-
-.PHONY: clean client test docs upload release
diff --git a/modules/libjuju/TODO b/modules/libjuju/TODO
deleted file mode 100644
index 94fc342..0000000
--- a/modules/libjuju/TODO
+++ /dev/null
@@ -1,5 +0,0 @@
-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 --git a/modules/libjuju/VERSION b/modules/libjuju/VERSION
deleted file mode 100644
index 1a96df1..0000000
--- a/modules/libjuju/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.11.3
diff --git a/modules/libjuju/docs/Makefile b/modules/libjuju/docs/Makefile
deleted file mode 100644
index 2869eb4..0000000
--- a/modules/libjuju/docs/Makefile
+++ /dev/null
@@ -1,230 +0,0 @@
-# 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 <target>' where <target> 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 --git a/modules/libjuju/docs/_extensions/automembersummary.py b/modules/libjuju/docs/_extensions/automembersummary.py
deleted file mode 100644
index cfe0b84..0000000
--- a/modules/libjuju/docs/_extensions/automembersummary.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2014-2015 Canonical Limited.
-#
-# 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.
-
-
-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, '<automembersummary>')
-        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 --git a/modules/libjuju/docs/_static/custom.css b/modules/libjuju/docs/_static/custom.css
deleted file mode 100644
index 333cd74..0000000
--- a/modules/libjuju/docs/_static/custom.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.wy-table-responsive table td,
-.wy-table-responsive table th
-{
-    white-space: normal !important;
-}
diff --git a/modules/libjuju/docs/api/juju.action.rst b/modules/libjuju/docs/api/juju.action.rst
deleted file mode 100644
index cc86af2..0000000
--- a/modules/libjuju/docs/api/juju.action.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.action
-===========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.action
-
-.. rubric:: Reference
-
-.. automodule:: juju.action
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.annotation.rst b/modules/libjuju/docs/api/juju.annotation.rst
deleted file mode 100644
index ec31344..0000000
--- a/modules/libjuju/docs/api/juju.annotation.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.annotation
-===============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.annotation
-
-.. rubric:: Reference
-
-.. automodule:: juju.annotation
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.application.rst b/modules/libjuju/docs/api/juju.application.rst
deleted file mode 100644
index dba9177..0000000
--- a/modules/libjuju/docs/api/juju.application.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.application
-================
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.application
-
-.. rubric:: Reference
-
-.. automodule:: juju.application
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.client.rst b/modules/libjuju/docs/api/juju.client.rst
deleted file mode 100644
index dad691f..0000000
--- a/modules/libjuju/docs/api/juju.client.rst
+++ /dev/null
@@ -1,120 +0,0 @@
-Internal APIs
-=============
-
-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 --git a/modules/libjuju/docs/api/juju.cloud.rst b/modules/libjuju/docs/api/juju.cloud.rst
deleted file mode 100644
index 39021e0..0000000
--- a/modules/libjuju/docs/api/juju.cloud.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.cloud
-==========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.cloud
-
-.. rubric:: Reference
-
-.. automodule:: juju.cloud
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.constraints.rst b/modules/libjuju/docs/api/juju.constraints.rst
deleted file mode 100644
index 5fcbd31..0000000
--- a/modules/libjuju/docs/api/juju.constraints.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.constraints
-================
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.constraints
-
-.. rubric:: Reference
-
-.. automodule:: juju.constraints
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.controller.rst b/modules/libjuju/docs/api/juju.controller.rst
deleted file mode 100644
index 4484fd5..0000000
--- a/modules/libjuju/docs/api/juju.controller.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.controller
-===============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.controller
-
-.. rubric:: Reference
-
-.. automodule:: juju.controller
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.delta.rst b/modules/libjuju/docs/api/juju.delta.rst
deleted file mode 100644
index 9924f8c..0000000
--- a/modules/libjuju/docs/api/juju.delta.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.delta
-==========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.delta
-
-.. rubric:: Reference
-
-.. automodule:: juju.delta
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.errors.rst b/modules/libjuju/docs/api/juju.errors.rst
deleted file mode 100644
index 7c77574..0000000
--- a/modules/libjuju/docs/api/juju.errors.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.errors
-===========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.errors
-
-.. rubric:: Reference
-
-.. automodule:: juju.errors
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.exceptions.rst b/modules/libjuju/docs/api/juju.exceptions.rst
deleted file mode 100644
index 85be2fb..0000000
--- a/modules/libjuju/docs/api/juju.exceptions.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.exceptions
-===============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.exceptions
-
-.. rubric:: Reference
-
-.. automodule:: juju.exceptions
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.juju.rst b/modules/libjuju/docs/api/juju.juju.rst
deleted file mode 100644
index 68698c3..0000000
--- a/modules/libjuju/docs/api/juju.juju.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.juju
-=========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.juju
-
-.. rubric:: Reference
-
-.. automodule:: juju.juju
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.loop.rst b/modules/libjuju/docs/api/juju.loop.rst
deleted file mode 100644
index 4f175e9..0000000
--- a/modules/libjuju/docs/api/juju.loop.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.loop
-=========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.loop
-
-.. rubric:: Reference
-
-.. automodule:: juju.loop
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.machine.rst b/modules/libjuju/docs/api/juju.machine.rst
deleted file mode 100644
index edb5b6c..0000000
--- a/modules/libjuju/docs/api/juju.machine.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.machine
-============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.machine
-
-.. rubric:: Reference
-
-.. automodule:: juju.machine
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.model.rst b/modules/libjuju/docs/api/juju.model.rst
deleted file mode 100644
index dfb735d..0000000
--- a/modules/libjuju/docs/api/juju.model.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.model
-==========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.model
-
-.. rubric:: Reference
-
-.. automodule:: juju.model
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.placement.rst b/modules/libjuju/docs/api/juju.placement.rst
deleted file mode 100644
index 67cde0c..0000000
--- a/modules/libjuju/docs/api/juju.placement.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.placement
-==============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.placement
-
-.. rubric:: Reference
-
-.. automodule:: juju.placement
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.relation.rst b/modules/libjuju/docs/api/juju.relation.rst
deleted file mode 100644
index 90e3130..0000000
--- a/modules/libjuju/docs/api/juju.relation.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.relation
-=============
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.relation
-
-.. rubric:: Reference
-
-.. automodule:: juju.relation
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.tag.rst b/modules/libjuju/docs/api/juju.tag.rst
deleted file mode 100644
index 9b3a29f..0000000
--- a/modules/libjuju/docs/api/juju.tag.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.tag
-========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.tag
-
-.. rubric:: Reference
-
-.. automodule:: juju.tag
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.unit.rst b/modules/libjuju/docs/api/juju.unit.rst
deleted file mode 100644
index 4a7d167..0000000
--- a/modules/libjuju/docs/api/juju.unit.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.unit
-=========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.unit
-
-.. rubric:: Reference
-
-.. automodule:: juju.unit
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/juju.utils.rst b/modules/libjuju/docs/api/juju.utils.rst
deleted file mode 100644
index 9220a1b..0000000
--- a/modules/libjuju/docs/api/juju.utils.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-juju.utils
-==========
-
-.. rubric:: Summary
-
-.. automembersummary:: juju.utils
-
-.. rubric:: Reference
-
-.. automodule:: juju.utils
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/modules/libjuju/docs/api/modules.rst b/modules/libjuju/docs/api/modules.rst
deleted file mode 100644
index 9722a6a..0000000
--- a/modules/libjuju/docs/api/modules.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-Public APIs
-===========
-
-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 --git a/modules/libjuju/docs/changelog.rst b/modules/libjuju/docs/changelog.rst
deleted file mode 100644
index d5e13ba..0000000
--- a/modules/libjuju/docs/changelog.rst
+++ /dev/null
@@ -1,290 +0,0 @@
-Changelog
----------
-
-0.11.3
-^^^^^^
-Wednesday March 13 2019
-
-* k8s bundles no longer have application placement (#293)
-* Add retry for connection if all endpoints fail (#288)
-* Support generation of registration string for model sharing. (#279)
-* Add Twine for dist upload on release (#284)
-
-
-0.11.2
-^^^^^^
-Wednesday January 16 2019
-
-* update facade methods for Juju 2.5-rc2 (#281)
-* Add test case for redirect during connect (#275)
-* Implement App.get_resources and pinned resources in bundles (#278)
-
-
-0.11.1
-^^^^^^
-Thursday December 13 2018
-
-* Fix bundles with subordinates for Juju <2.5 (#277)
-
-
-0.11.0
-^^^^^^
-Tuesday December 11 2018
-
-* Updates for new Juju version (#274)
-* Fix wrong variable name in revoke_model function (#271)
-
-
-0.10.2
-^^^^^^
-Tuesday September 18 2018
-
-* set include_stats to false to reduce request time (#266)
-
-
-0.10.1
-^^^^^^
-Monday September 17 2018
-
-* Retry ssh in manual provision test (#265)
-* Clean up lint and add lint coverage to travis config (#263)
-* Increase the timeout for charmstore connections (#262)
-* Fix log level of `Driver connected to juju` message (#258)
-
-
-0.10.0
-^^^^^^
-Thursday August 16 2018
-
-* Fix error due to scp extra opts order (#260)
-* Implement set/get model constraints (#253)
-
-
->>>>>>> b8a8281b1785358bd5632a119c016f21811172c6
-0.9.1
-^^^^^
-Monday July 16 2018
-
-* Update websockets to 6.0 to fix OS X support due to Brew update to Py3.7 (#254)
-
-
-0.9.0
-^^^^^
-Friday June 29 2018
-
-* python3.7 compatibility updates (#251)
-* Handle juju not installed in is_bootstrapped for tests (#250)
-* Add app.reset_config(list). (#249)
-* Implement model.get_action_status (#248)
-* Fix `make client` in Python 3.6 (#247)
-
-
-0.8.0
-^^^^^
-Thursday June 14 2018
-
-* Add support for adding a manual (ssh) machine (#240)
-* Backwards compatibility fixes (#213)
-* Implement model.get_action_output (#242)
-* Fix JSON serialization error for bundle with lxd to unit placement (#243)
-* Fix reference in docs to connect_current (#239)
-* Wrap machine agent status workaround in version check (#238)
-* Convert seconds to nanoseconds for juju.unit.run (#237)
-* Fix spurious intermittent failure in test_machines.py::test_status (#236)
-* Define an unused juju-zfs lxd storage pool for Travis (#235)
-* Add support for Application get_actions (#234)
-
-
-0.7.5
-^^^^^
-Friday May 18 2018
-
-* Surface errors from bundle plan (#233)
-* Always send auth-tag even with macaroon auth (#217)
-* Inline jsonfile credential when sending to controller (#231)
-
-0.7.4
-^^^^^
-Tuesday Apr 24 2018
-
-* Always parse tags and spaces constraints to lists (#228)
-* Doc index improvements (#211)
-* Add doc req to force newer pymacaroons to fix RTD builds
-* Fix dependency conflict for building docs
-
-0.7.3
-^^^^^
-Tuesday Feb 20 2018
-
-* Full macaroon bakery support (#206)
-* Fix regression with deploying local charm, add test case (#209)
-* Expose a machines series (#208)
-* Automated test runner fixes (#205)
-
-0.7.2
-^^^^^
-Friday Feb 9 2018
-
-* Support deploying bundle YAML file directly (rather than just directory) (#202)
-
-0.7.1
-^^^^^
-Monday Dec 18 2017
-
-* Fix missed renames of model_uuids (#197)
-
-0.7.0
-^^^^^
-Fri Dec 15 2017
-
-* Fix race condition in adding relations (#192)
-* Fix race condition in connection monitor test (#183)
-* Fix example in README (#178)
-* Fix rare hang during Unit.run (#177)
-* Fix licensing quirks (#176)
-* Refactor model handling (#171)
-* Refactor users handling, add get_users (#170)
-* Upload credential to controller when adding model (#168)
-* Support 'applications' key in bundles (#165)
-* Improve handling of thread error handling for loop.run() (#169)
-* Fix encoding when using to_json() (#166)
-* Fix intermittent test failures (#167)
-
-0.6.1
-^^^^^
-Fri Sept 29 2017
-
-* Fix failure when controller supports newer facade version (#145)
-* Fix test failures (#163)
-* Fix SSH key handling when adding a new model (#161)
-* Make Application.upgrade_charm upgrade resources (#158)
-* Expand integration tests to use stable/edge versions of juju (#155)
-* Move docs to ReadTheDocs (https://pythonlibjuju.readthedocs.io/en/latest/)
-
-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 --git a/modules/libjuju/docs/conf.py b/modules/libjuju/docs/conf.py
deleted file mode 100644
index a95ec04..0000000
--- a/modules/libjuju/docs/conf.py
+++ /dev/null
@@ -1,303 +0,0 @@
-# -*- 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.
-# "<project> v<release> 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 <link> 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 --git a/modules/libjuju/docs/index.rst b/modules/libjuju/docs/index.rst
deleted file mode 100644
index 2dd55cb..0000000
--- a/modules/libjuju/docs/index.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-.. 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::
-   :caption: Overview
-   :glob:
-   :maxdepth: 3
-
-   narrative/index
-
-
-.. toctree::
-   :caption: API Documentation
-   :glob:
-   :maxdepth: 3
-
-   api/modules
-   api/juju.client
-
-.. toctree::
-   :caption: Project
-   :glob:
-   :maxdepth: 3
-
-   upstream-updates/index
-   changelog
-
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
diff --git a/modules/libjuju/docs/narrative/application.rst b/modules/libjuju/docs/narrative/application.rst
deleted file mode 100644
index 1565e5f..0000000
--- a/modules/libjuju/docs/narrative/application.rst
+++ /dev/null
@@ -1,136 +0,0 @@
-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 --git a/modules/libjuju/docs/narrative/controller.rst b/modules/libjuju/docs/narrative/controller.rst
deleted file mode 100644
index 1d86321..0000000
--- a/modules/libjuju/docs/narrative/controller.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-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 py:doc:`model`).
-
-For API docs, see py: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()
-
-
-Connecting to a Named Controller
---------------------------------
-Connect to a controller by name.
-
-.. code:: python
-
-  from juju.controller import Controller
-
-  controller = Controller()
-  await controller.connect('mycontroller')
-
-
-Connecting with Authentication
-------------------------------
-You can control what user you are connecting with by specifying either a
-username/password pair, or a macaroon or bakery client that can provide
-a macaroon.
-
-
-.. code:: python
-
-  controller = Controller()
-  await controller.connect(username='admin',
-                           password='f53f08cfc32a2e257fe5393271d89d62')
-
-  # or with a macaroon
-  await controller.connect(macaroons=[
-      {
-          "Name": "macaroon-218d87053ad19626bcd5a0eef0bc9ba8bd4fbd80a968f52a5fd430b2aa8660df",
-          "Value": "W3siY2F2ZWF0cyI6 ... jBkZiJ9XQ==",
-          "Domain": "10.130.48.27",
-          "Path": "/auth",
-          "Secure": false,
-          "HostOnly": true,
-          "Expires": "2018-03-07T22:07:23Z",
-      },
-  ])
-
-  # or with a bakery client
-  from macaroonbakery.httpbakery import Client
-  from http.cookiejar import FileCookieJar
-
-  bakery_client=Client()
-  bakery_client.cookies = FileCookieJar('cookies.txt')
-  controller = Controller()
-  await controller.connect(bakery_client=bakery_client)
-  
-
-
-Connecting with an Explicit Endpoint
-------------------------------------
-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
-
-  controller = Controller()
-  await controller.connect(
-      endpoint='10.0.4.171:17070',
-      username='admin',
-      password='f53f08cfc32a2e257fe5393271d89d62',
-      cacert=None,  # Left out for brevity, but if you have a cert string you
-                    # should pass it in. You can get the cert from the output
-                    # of The `juju show-controller` command.
-  )
diff --git a/modules/libjuju/docs/narrative/index.rst b/modules/libjuju/docs/narrative/index.rst
deleted file mode 100644
index b1684a0..0000000
--- a/modules/libjuju/docs/narrative/index.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-**Overview**
-
-.. toctree::
-   :glob:
-   :maxdepth: 2
-
-   controller
-   model
-   application
-   unit
diff --git a/modules/libjuju/docs/narrative/model.rst b/modules/libjuju/docs/narrative/model.rst
deleted file mode 100644
index 42633a1..0000000
--- a/modules/libjuju/docs/narrative/model.rst
+++ /dev/null
@@ -1,290 +0,0 @@
-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 py: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
-
-  model = Model()
-  await model.connect()
-
-
-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
-
-  model = Model()
-  await model.connect('juju-2.0.1:admin/libjuju')
-
-
-Connecting with Authentication
-------------------------------
-You can control what user you are connecting with by specifying either a
-username/password pair, or a macaroon or bakery client that can provide
-a macaroon.
-
-
-.. code:: python
-
-  model = Model()
-  await model.connect(username='admin',
-                      password='f53f08cfc32a2e257fe5393271d89d62')
-
-  # or with a macaroon
-  await model.connect(macaroons=[
-      {
-          "Name": "macaroon-218d87053ad19626bcd5a0eef0bc9ba8bd4fbd80a968f52a5fd430b2aa8660df",
-          "Value": "W3siY2F2ZWF0cyI6 ... jBkZiJ9XQ==",
-          "Domain": "10.130.48.27",
-          "Path": "/auth",
-          "Secure": false,
-          "HostOnly": true,
-          "Expires": "2018-03-07T22:07:23Z",
-      },
-  ])
-
-  # or with a bakery client
-  from macaroonbakery.httpbakery import Client
-  from http.cookiejar import FileCookieJar
-
-  bakery_client=Client()
-  bakery_client.cookies = FileCookieJar('cookies.txt')
-  model = Model()
-  await model.connect(bakery_client=bakery_client)
-  
-
-
-Connecting with an Explicit Endpoint
-------------------------------------
-The most flexible, but also most verbose, way to connect is using the API
-endpoint url, model UUID, and credentials directly. This method does NOT
-require the Juju CLI client to be installed.
-
-.. code:: python
-
-  from juju.model import Model
-
-  model = Model()
-  await model.connect(
-      endpoint='10.0.4.171:17070',
-      uuid='e8399ac7-078c-4817-8e5e-32316d55b083',
-      username='admin',
-      password='f53f08cfc32a2e257fe5393271d89d62',
-      cacert=None,  # Left out for brevity, but if you have a cert string you
-                    # should pass it in. You can get the cert from the output
-                    # of The `juju show-controller` command.
-  )
-
-
-Creating and Destroying a Model
--------------------------------
-Example of creating a new model and then destroying it. See
-py:method:`juju.controller.Controller.add_model` and
-py:method:`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
-py:method:`~juju.model.Model.add_machine` method. A
-py: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
-py: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 py: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 --git a/modules/libjuju/docs/narrative/unit.rst b/modules/libjuju/docs/narrative/unit.rst
deleted file mode 100644
index 5d6b48d..0000000
--- a/modules/libjuju/docs/narrative/unit.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-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 --git a/modules/libjuju/docs/readme.rst b/modules/libjuju/docs/readme.rst
deleted file mode 100644
index 87666d0..0000000
--- a/modules/libjuju/docs/readme.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-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:
-
-
-.. code:: python
-
-  #!/usr/bin/python3
-
-  import logging
-  import sys
-
-  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()
-
-      try:
-          # Deploy a single unit of the ubuntu charm, using the latest revision
-          # from the stable channel of the Charm Store.
-          ubuntu_app = await model.deploy(
-            'ubuntu',
-            application_name='ubuntu',
-            series='xenial',
-            channel='stable',
-          )
-
-          if '--wait' in sys.argv:
-              # optionally block until the application is ready
-              await model.block_until(lambda: ubuntu_app.status == 'active')
-      finally:
-          # Disconnect from the api server and cleanup.
-          await model.disconnect()
-
-
-  def main():
-      logging.basicConfig(level=logging.INFO)
-
-      # 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()
-
-
-More examples can be found in the docs, as well as in the ``examples/``
-directory of the source tree which can be run using ``tox``.  For
-example, to run ``examples/connect_current_model.py``, use:
-
-.. code:: bash
-
-  tox -e example -- examples/connect_current_model.py
diff --git a/modules/libjuju/docs/requirements.txt b/modules/libjuju/docs/requirements.txt
deleted file mode 100644
index dabf3a0..0000000
--- a/modules/libjuju/docs/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-pytz<2018.0,>=2017.2  # conflict between sphinx and macaroonbakery
-pymacaroons>=0.13.0,<1.0  # force new version with pynacl instead of libnacl
-sphinx==1.6.5
-sphinxcontrib-asyncio
-sphinx_rtd_theme
diff --git a/modules/libjuju/docs/upstream-updates/index.rst b/modules/libjuju/docs/upstream-updates/index.rst
deleted file mode 100644
index 41f448a..0000000
--- a/modules/libjuju/docs/upstream-updates/index.rst
+++ /dev/null
@@ -1,114 +0,0 @@
-Syncing 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-<version>.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.
-
-
-Integrating into the Object Layer
----------------------------------
-
-Once the raw client APIs are synced, you may need to integrate any new or
-changed API calls into the object layer, to provide a clean, Pythonic way
-to interact with the model.  This may be as simple as adding an optional
-parameter to an existing model method, tweaking what manipulations, if any
-the model method does to the data before it is sent to the API, or it may
-require adding an entirely new model method to capture the new functionality.
-
-In general, the approach should be to make the interactions with the model
-layer use the same patterns as when you use the CLI, just with Python idioms
-and OO approaches.
-
-When trying to determine what client calls need to be made and what data to
-be sent for a given Juju CLI action, it is very useful to add
-`--debug --logging-config TRACE` to any Juju CLI command to view the full
-conversation between the CLI client and the API server.  For example:
-
-```
-[johnsca@murdoch:~] $ juju deploy --debug --logging-config TRACE ./builds/test
-11:51:20 INFO  juju.cmd supercommand.go:56 running juju [2.3.5 gc go1.10]
-11:51:20 DEBUG juju.cmd supercommand.go:57   args: []string{"/snap/juju/3884/bin/juju", "deploy", "--debug", "--logging-config", "TRACE", "./builds/test"}
-11:51:20 INFO  juju.juju api.go:67 connecting to API addresses: [35.172.119.191:17070 172.31.94.16:17070 252.94.16.1:17070]
-11:51:20 TRACE juju.api certpool.go:49 cert dir "/etc/juju/certs.d" does not exist
-11:51:20 DEBUG juju.api apiclient.go:843 successfully dialed "wss://35.172.119.191:17070/model/a7317969-6dab-4ba4-844b-af3d661c228d/api"
-11:51:20 INFO  juju.api apiclient.go:597 connection established to "wss://35.172.119.191:17070/model/a7317969-6dab-4ba4-844b-af3d661c228d/api"
-...
-11:51:20 INFO  juju.cmd.juju.application series_selector.go:71 with the configured model default series "xenial"
-11:51:20 DEBUG httpbakery client.go:244 client do POST https://35.172.119.191:17070/model/a7317969-6dab-4ba4-844b-af3d661c228d/charms?revision=0&schema=local&series=xenial {
-11:51:21 DEBUG httpbakery client.go:246 } -> error <nil>
-11:51:21 INFO  cmd deploy.go:1096 Deploying charm "local:xenial/test-0".
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:225 -> {"request-id":3,"type":"Charms","version":2,"request":"CharmInfo","params":{"url":"local:xenial/test-0"}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:120 <- {"request-id":3,"response":{"revision":0,"url":"local:xenial/test-0","config":{"test":{"type":"string","default":""}},"meta":{"name":"test","summary":"test","description":"test","subordinate":false,"series":["xenial"],"resources":{"dummy":{"name":"dummy","type":"file","path":"dummy.snap","description":"dummy snap"}},"min-juju-version":"0.0.0"},"actions":{}}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:225 -> {"request-id":4,"type":"Charms","version":2,"request":"IsMetered","params":{"url":"local:xenial/test-0"}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:120 <- {"request-id":4,"response":{"metered":false}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:225 -> {"request-id":5,"type":"Resources","version":1,"request":"AddPendingResources","params":{"tag":"application-test","url":"local:xenial/test-0","channel":"","macaroon":null,"resources":[{"name":"dummy","type":"file","path":"dummy.snap","description":"dummy snap","origin":"store","revision":-1,"fingerprint":"","size":0}]}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:120 <- {"request-id":5,"response":{"pending-ids":["c0ffdd92-da23-4fb2-8d41-d82d58423447"]}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:225 -> {"request-id":6,"type":"Application","version":5,"request":"Deploy","params":{"applications":[{"application":"test","series":"xenial","charm-url":"local:xenial/test-0","channel":"","num-units":1,"config-yaml":"","constraints":{},"resources":{"dummy":"c0ffdd92-da23-4fb2-8d41-d82d58423447"}}]}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:120 <- {"request-id":6,"response":{"results":[{}]}}
-11:51:21 TRACE juju.rpc.jsoncodec codec.go:123 <- error: read tcp 192.168.1.102:52168->35.172.119.191:17070: use of closed network connection (closing true)
-11:51:21 DEBUG juju.api monitor.go:35 RPC connection died
-11:51:21 INFO  cmd supercommand.go:465 command finished
-```
-
-Note that this will contain login information (which has been removed from the above).
-
-
-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 --git a/modules/libjuju/examples/action.py b/modules/libjuju/examples/action.py
deleted file mode 100644
index f839f11..0000000
--- a/modules/libjuju/examples/action.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
-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 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()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/examples/add_machine.py b/modules/libjuju/examples/add_machine.py
deleted file mode 100755
index 33d0c34..0000000
--- a/modules/libjuju/examples/add_machine.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/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()
-
-    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 --git a/modules/libjuju/examples/add_model.py b/modules/libjuju/examples/add_model.py
deleted file mode 100644
index 88766f1..0000000
--- a/modules/libjuju/examples/add_model.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""
-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")
-    # connect to current controller with current user, per Juju CLI
-    await controller.connect()
-
-    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 --git a/modules/libjuju/examples/allwatcher.py b/modules/libjuju/examples/allwatcher.py
deleted file mode 100644
index 884230b..0000000
--- a/modules/libjuju/examples/allwatcher.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""
-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()
-    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 --git a/modules/libjuju/examples/config.py b/modules/libjuju/examples/config.py
deleted file mode 100644
index c7580f6..0000000
--- a/modules/libjuju/examples/config.py
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-This example:
-
-1. Connects to the current model
-2. Resets it
-3. Deploys a charm and prints its config and constraints
-
-"""
-import logging
-
-from juju.model import Model
-from juju import loop
-
-log = logging.getLogger(__name__)
-
-MB = 1
-
-
-async def main():
-    model = Model()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/examples/connect_current_model.py b/modules/libjuju/examples/connect_current_model.py
deleted file mode 100644
index b46a09c..0000000
--- a/modules/libjuju/examples/connect_current_model.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""
-This is a very basic example that connects to the currently selected model
-and prints the number of applications deployed to it.
-"""
-import logging
-
-from juju import loop
-from juju.model import Model
-
-log = logging.getLogger(__name__)
-
-
-async def main():
-    model = Model()
-    try:
-        # connect to the current model with the current user, per the Juju CLI
-        await model.connect()
-        print('There are {} applications'.format(len(model.applications)))
-    finally:
-        if model.is_connected():
-            print('Disconnecting from model')
-            await model.disconnect()
-
-
-if __name__ == '__main__':
-    logging.basicConfig(level=logging.INFO)
-    loop.run(main())
diff --git a/modules/libjuju/examples/controller.py b/modules/libjuju/examples/controller.py
deleted file mode 100644
index b61a6f6..0000000
--- a/modules/libjuju/examples/controller.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-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 logging
-
-from juju.controller import Controller
-from juju import loop
-
-
-async def main():
-    controller = Controller()
-    # connect to current controller with current user, per Juju CLI
-    await controller.connect()
-    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 --git a/modules/libjuju/examples/credential.py b/modules/libjuju/examples/credential.py
deleted file mode 100644
index e653536..0000000
--- a/modules/libjuju/examples/credential.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import sys
-from juju import loop
-from juju.controller import Controller
-
-
-async def main(cloud_name, credential_name):
-    controller = Controller()
-    model = None
-    print('Connecting to controller')
-    # connect to current controller with current user, per Juju CLI
-    await controller.connect()
-    try:
-        print('Adding model')
-        model = await controller.add_model(
-            'test',
-            cloud_name=cloud_name,
-            credential_name=credential_name)
-
-        # verify credential
-        print("Verify model's credential: {}".format(
-            model.info.cloud_credential_tag))
-
-        # verify we can deploy
-        print('Deploying ubuntu')
-        app = await model.deploy('ubuntu-10')
-
-        print('Waiting for active')
-        await model.block_until(
-            lambda: app.units and all(unit.workload_status == 'active'
-                                      for unit in app.units))
-
-        print('Removing ubuntu')
-        await app.remove()
-    finally:
-        print('Cleaning up')
-        if model:
-            print('Removing model')
-            model_uuid = model.info.uuid
-            await model.disconnect()
-            await controller.destroy_model(model_uuid)
-        print('Disconnecting')
-        await controller.disconnect()
-
-
-if __name__ == '__main__':
-    assert len(sys.argv) > 2, 'Please provide a cloud and credential name'
-    loop.run(main(sys.argv[1], sys.argv[2]))
diff --git a/modules/libjuju/examples/deploy.py b/modules/libjuju/examples/deploy.py
deleted file mode 100644
index 43764d7..0000000
--- a/modules/libjuju/examples/deploy.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-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')
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/examples/fullstatus.py b/modules/libjuju/examples/fullstatus.py
deleted file mode 100644
index 5548423..0000000
--- a/modules/libjuju/examples/fullstatus.py
+++ /dev/null
@@ -1,23 +0,0 @@
-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()
-    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 --git a/modules/libjuju/examples/future.py b/modules/libjuju/examples/future.py
deleted file mode 100644
index 5e974cf..0000000
--- a/modules/libjuju/examples/future.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"""
-This example doesn't work - it demonstrates features that don't exist yet.
-
-"""
-import logging
-
-from juju.model import Model
-from juju import loop
-
-
-async def main():
-    model = Model()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/examples/leadership.py b/modules/libjuju/examples/leadership.py
deleted file mode 100644
index dbd1b6e..0000000
--- a/modules/libjuju/examples/leadership.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-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()
-
-    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 --git a/modules/libjuju/examples/livemodel.py b/modules/libjuju/examples/livemodel.py
deleted file mode 100644
index 1b10ac9..0000000
--- a/modules/libjuju/examples/livemodel.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""
-This example:
-
-1. Connects to the current model
-2. Watches the model and prints all changes
-3. Runs forever (kill with Ctrl-C)
-
-"""
-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()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/examples/localcharm.py b/modules/libjuju/examples/localcharm.py
deleted file mode 100644
index b9481d4..0000000
--- a/modules/libjuju/examples/localcharm.py
+++ /dev/null
@@ -1,34 +0,0 @@
-"""
-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()
-
-    # 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 --git a/modules/libjuju/examples/relate.py b/modules/libjuju/examples/relate.py
deleted file mode 100644
index 347e021..0000000
--- a/modules/libjuju/examples/relate.py
+++ /dev/null
@@ -1,102 +0,0 @@
-"""
-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()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    try:
-        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))
-        ))
-    finally:
-        await model.disconnect()
-
-
-if __name__ == '__main__':
-    logging.basicConfig(level=logging.INFO)
-    ws_logger = logging.getLogger('websockets.protocol')
-    ws_logger.setLevel(logging.INFO)
-    loop.run(main())
diff --git a/modules/libjuju/examples/unitrun.py b/modules/libjuju/examples/unitrun.py
deleted file mode 100644
index 805f0ae..0000000
--- a/modules/libjuju/examples/unitrun.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""
-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 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()
-    # connect to current model with current user, per Juju CLI
-    await model.connect()
-
-    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 --git a/modules/libjuju/juju/__init__.py b/modules/libjuju/juju/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/juju/__init__.py
+++ /dev/null
diff --git a/modules/libjuju/juju/action.py b/modules/libjuju/juju/action.py
deleted file mode 100644
index 7a136a7..0000000
--- a/modules/libjuju/juju/action.py
+++ /dev/null
@@ -1,10 +0,0 @@
-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 --git a/modules/libjuju/juju/annotation.py b/modules/libjuju/juju/annotation.py
deleted file mode 100644
index 73c9b1c..0000000
--- a/modules/libjuju/juju/annotation.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import logging
-
-from . import model
-
-log = logging.getLogger(__name__)
-
-
-class Annotation(model.ModelEntity):
-    pass
diff --git a/modules/libjuju/juju/application.py b/modules/libjuju/juju/application.py
deleted file mode 100644
index 3f7f02e..0000000
--- a/modules/libjuju/juju/application.py
+++ /dev/null
@@ -1,533 +0,0 @@
-# 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.
-
-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 relations(self):
-        return [rel for rel in self.model.relations if rel.matches(self.name)]
-
-    def related_applications(self, endpoint_name=None):
-        apps = {}
-        for rel in self.relations:
-            if rel.is_peer:
-                local_ep, remote_ep = rel.endpoints[0]
-            else:
-                def is_us(ep):
-                    return ep.application.name == self.name
-                local_ep, remote_ep = sorted(rel.endpoints, key=is_us)
-            if endpoint_name is not None and endpoint_name != local_ep.name:
-                continue
-            apps[remote_ep.application.name] = remote_ep.application
-        return apps
-
-    @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 '<application>[:<relation_name>]'
-
-        """
-        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
-
-    async def scale(self, scale=None, scale_change=None):
-        """
-        Set or adjust the scale of this (K8s) application.
-
-        One or the other of scale or scale_change must be provided.
-
-        :param int scale: Scale to which to set this application.
-        :param int scale_change: Amount by which to adjust the scale of this
-            application (can be positive or negative).
-        """
-        app_facade = client.ApplicationFacade.from_connection(self.connection)
-
-        if (scale, scale_change) == (None, None):
-            raise ValueError('Must provide either scale or scale_change')
-
-        log.debug(
-            'Scaling application %s %s %s',
-            self.name, 'to' if scale else 'by', scale or scale_change)
-
-        await app_facade.ScaleApplications([
-            client.ScaleApplicationParam(application_tag=self.tag,
-                                         scale=scale,
-                                         scale_change=scale_change)
-        ])
-
-    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 '<application>[:<relation_name>]'
-
-        """
-        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
-
-    async def get_actions(self, schema=False):
-        """Get actions defined for this application.
-
-        :param bool schema: Return the full action schema
-        :return dict: The charms actions, empty dict if none are defined.
-        """
-        actions = {}
-        entity = [{"tag": self.tag}]
-        action_facade = client.ActionFacade.from_connection(self.connection)
-        results = (
-            await action_facade.ApplicationsCharmsActions(entity)).results
-        for result in results:
-            if result.application_tag == self.tag and result.actions:
-                actions = result.actions
-                break
-        if not schema:
-            actions = {k: v['description'] for k, v in actions.items()}
-        return actions
-
-    async def get_resources(self):
-        """Return resources for this application.
-
-        Returns a dict mapping resource name to
-        :class:`~juju._definitions.CharmResource` instances.
-        """
-        facade = client.ResourcesFacade.from_connection(self.connection)
-        response = await facade.ListResources([client.Entity(self.tag)])
-
-        resources = dict()
-        for result in response.results:
-            for resource in result.charm_store_resources or []:
-                resources[resource.name] = resource
-            for resource in result.resources or []:
-                if resource.charmresource:
-                    resource = resource.charmresource
-                    resources[resource.name] = resource
-        return resources
-
-    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):
-        """Set configuration options for this application.
-
-        :param config: Dict of configuration to set
-        """
-        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 reset_config(self, to_default):
-        """
-        Restore application config to default values.
-
-        :param list to_default: A list of config options to be reset to their
-        default value.
-        """
-        app_facade = client.ApplicationFacade.from_connection(self.connection)
-
-        log.debug(
-            'Restoring default config for %s: %s', self.name, to_default)
-
-        return await app_facade.Unset(self.name, to_default)
-
-    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)
-        resources_facade = client.ResourcesFacade.from_connection(
-            self.connection)
-        app_facade = client.ApplicationFacade.from_connection(self.connection)
-
-        charmstore = self.model.charmstore
-        charmstore_entity = None
-
-        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_entity = await charmstore.entity(charm_url,
-                                                            channel=channel)
-                charm_url = charmstore_entity['Id']
-
-        if charm_url == self.data['charm-url']:
-            raise JujuError('already running charm "%s"' % charm_url)
-
-        # Update charm
-        await client_facade.AddCharm(
-            url=charm_url,
-            channel=channel
-        )
-
-        # Update resources
-        if not charmstore_entity:
-            charmstore_entity = await charmstore.entity(charm_url,
-                                                        channel=channel)
-        store_resources = charmstore_entity['Meta']['resources']
-
-        request_data = [client.Entity(self.tag)]
-        response = await resources_facade.ListResources(request_data)
-        existing_resources = {
-            resource.name: resource
-            for resource in response.results[0].resources
-        }
-
-        resources_to_update = [
-            resource for resource in store_resources
-            if resource['Name'] not in existing_resources or
-            existing_resources[resource['Name']].origin != 'upload'
-        ]
-
-        if resources_to_update:
-            request_data = [
-                client.CharmResource(
-                    description=resource.get('Description'),
-                    fingerprint=resource['Fingerprint'],
-                    name=resource['Name'],
-                    path=resource['Path'],
-                    revision=resource['Revision'],
-                    size=resource['Size'],
-                    type_=resource['Type'],
-                    origin='store',
-                ) for resource in resources_to_update
-            ]
-            response = await resources_facade.AddPendingResources(
-                self.tag,
-                charm_url,
-                request_data
-            )
-            pending_ids = response.pending_ids
-            resource_ids = {
-                resource['Name']: id
-                for resource, id in zip(resources_to_update, pending_ids)
-            }
-        else:
-            resource_ids = None
-
-        # Update application
-        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=resource_ids,
-            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 --git a/modules/libjuju/juju/client/__init__.py b/modules/libjuju/juju/client/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/juju/client/__init__.py
+++ /dev/null
diff --git a/modules/libjuju/juju/client/_client.py b/modules/libjuju/juju/client/_client.py
deleted file mode 100644
index bfa9e6f..0000000
--- a/modules/libjuju/juju/client/_client.py
+++ /dev/null
@@ -1,454 +0,0 @@
-# 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 _client2, _client1, _client3, _client4, _client5, _client8, _client7, _client9
-
-
-CLIENTS = {
-    "2": _client2,
-    "1": _client1,
-    "3": _client3,
-    "4": _client4,
-    "5": _client5,
-    "8": _client8,
-    "7": _client7,
-    "9": _client9
-}
-
-
-def lookup_facade(name, version):
-    """
-    Given a facade name and version, attempt to pull that facade out
-    of the correct client<version>.py file.
-
-    """
-    for _version in range(int(version), 0, -1):
-        try:
-            facade = getattr(CLIENTS[str(_version)], name)
-            return facade
-        except (KeyError, AttributeError):
-            continue
-    else:
-        raise ImportError("No supported version for facade: "
-                          "{}".format(name))
-
-
-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.
-
-        """
-        facade_name = cls.__name__
-        if not facade_name.endswith('Facade'):
-           raise TypeError('Unexpected class name: {}'.format(facade_name))
-        facade_name = facade_name[:-len('Facade')]
-        version = connection.facades.get(facade_name)
-        if version is None:
-            raise Exception('No facade {} in facades {}'.format(facade_name,
-                                                                connection.facades))
-
-        c = lookup_facade(cls.__name__, version)
-        c = c()
-        c.connect(connection)
-
-        return c
-
-
-class ActionFacade(TypeFactory):
-    pass
-
-
-class ActionPrunerFacade(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 ApplicationOffersFacade(TypeFactory):
-    pass
-
-
-class ApplicationRelationsWatcherFacade(TypeFactory):
-    pass
-
-
-class ApplicationScalerFacade(TypeFactory):
-    pass
-
-
-class BackupsFacade(TypeFactory):
-    pass
-
-
-class BlockFacade(TypeFactory):
-    pass
-
-
-class BundleFacade(TypeFactory):
-    pass
-
-
-class CAASAgentFacade(TypeFactory):
-    pass
-
-
-class CAASFirewallerFacade(TypeFactory):
-    pass
-
-
-class CAASOperatorFacade(TypeFactory):
-    pass
-
-
-class CAASOperatorProvisionerFacade(TypeFactory):
-    pass
-
-
-class CAASUnitProvisionerFacade(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 CredentialManagerFacade(TypeFactory):
-    pass
-
-
-class CredentialValidatorFacade(TypeFactory):
-    pass
-
-
-class CrossControllerFacade(TypeFactory):
-    pass
-
-
-class CrossModelRelationsFacade(TypeFactory):
-    pass
-
-
-class DeployerFacade(TypeFactory):
-    pass
-
-
-class DiscoverSpacesFacade(TypeFactory):
-    pass
-
-
-class DiskManagerFacade(TypeFactory):
-    pass
-
-
-class EntityWatcherFacade(TypeFactory):
-    pass
-
-
-class ExternalControllerUpdaterFacade(TypeFactory):
-    pass
-
-
-class FanConfigurerFacade(TypeFactory):
-    pass
-
-
-class FilesystemAttachmentsWatcherFacade(TypeFactory):
-    pass
-
-
-class FirewallRulesFacade(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 ModelUpgraderFacade(TypeFactory):
-    pass
-
-
-class NotifyWatcherFacade(TypeFactory):
-    pass
-
-
-class OfferStatusWatcherFacade(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 RelationStatusWatcherFacade(TypeFactory):
-    pass
-
-
-class RelationUnitsWatcherFacade(TypeFactory):
-    pass
-
-
-class RemoteApplicationWatcherFacade(TypeFactory):
-    pass
-
-
-class RemoteRelationsFacade(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 UpgradeSeriesFacade(TypeFactory):
-    pass
-
-
-class UpgraderFacade(TypeFactory):
-    pass
-
-
-class UserManagerFacade(TypeFactory):
-    pass
-
-
-class VolumeAttachmentPlansWatcherFacade(TypeFactory):
-    pass
-
-
-class VolumeAttachmentsWatcherFacade(TypeFactory):
-    pass
diff --git a/modules/libjuju/juju/client/_client1.py b/modules/libjuju/juju/client/_client1.py
deleted file mode 100644
index 83437bc..0000000
--- a/modules/libjuju/juju/client/_client1.py
+++ /dev/null
@@ -1,11068 +0,0 @@
-# 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.facade import ReturnMapping, Type
-
-
-class ActionPrunerFacade(Type):
-    name = 'ActionPruner'
-    version = 1
-    schema =     {'definitions': {'ActionPruneArgs': {'additionalProperties': False,
-                                         'properties': {'max-history-mb': {'type': 'integer'},
-                                                        'max-history-time': {'type': 'integer'}},
-                                         'required': ['max-history-time',
-                                                      'max-history-mb'],
-                                         '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'},
-                     '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'}},
-     'properties': {'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'Prune': {'properties': {'Params': {'$ref': '#/definitions/ActionPruneArgs'}},
-                              'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ActionPruner',
-                   request='ModelConfig',
-                   version=1,
-                   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='ActionPruner',
-                   request='Prune',
-                   version=1,
-                   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='ActionPruner',
-                   request='WatchForModelConfigChanges',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-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[~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[~Entity]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[~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.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
-        '''
-        # 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 CAASAgentFacade(Type):
-    name = 'CAASAgent'
-    version = 1
-    schema =     {'definitions': {'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': {'cacertificates': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                  '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'},
-                     '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'}},
-     'properties': {'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/CloudSpecResults'}},
-                                  'type': 'object'},
-                    'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'},
-                                                    'Result': {'$ref': '#/definitions/CloudSpecResult'}},
-                                     'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(CloudSpecResults)
-    async def CloudSpec(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudSpecResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASAgent',
-                   request='CloudSpec',
-                   version=1,
-                   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='CAASAgent',
-                   request='GetCloudSpec',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASAgent',
-                   request='ModelConfig',
-                   version=1,
-                   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='CAASAgent',
-                   request='WatchForModelConfigChanges',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CAASFirewallerFacade(Type):
-    name = 'CAASFirewaller'
-    version = 1
-    schema =     {'definitions': {'ApplicationGetConfigResults': {'additionalProperties': False,
-                                                     'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
-                                                                                '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'},
-                     'ConfigResult': {'additionalProperties': False,
-                                      'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'error': {'$ref': '#/definitions/Error'}},
-                                      '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'},
-                     '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'},
-                     'StringsWatchResult': {'additionalProperties': False,
-                                            'properties': {'changes': {'items': {'type': 'string'},
-                                                                       'type': 'array'},
-                                                           'error': {'$ref': '#/definitions/Error'},
-                                                           'watcher-id': {'type': 'string'}},
-                                            'required': ['watcher-id'],
-                                            'type': 'object'}},
-     'properties': {'ApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
-                                           'type': 'object'},
-                    'IsExposed': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/BoolResults'}},
-                                  'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'},
-                    'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                          'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ApplicationGetConfigResults)
-    async def ApplicationsConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASFirewaller',
-                   request='ApplicationsConfig',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def IsExposed(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASFirewaller',
-                   request='IsExposed',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASFirewaller',
-                   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[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASFirewaller',
-                   request='Watch',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchApplications(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASFirewaller',
-                   request='WatchApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CAASOperatorFacade(Type):
-    name = 'CAASOperator'
-    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'},
-                     'ApplicationCharm': {'additionalProperties': False,
-                                          'properties': {'charm-modified-version': {'type': 'integer'},
-                                                         'force-upgrade': {'type': 'boolean'},
-                                                         'sha256': {'type': 'string'},
-                                                         'url': {'type': 'string'}},
-                                          'required': ['url',
-                                                       'sha256',
-                                                       'charm-modified-version'],
-                                          'type': 'object'},
-                     'ApplicationCharmResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'result': {'$ref': '#/definitions/ApplicationCharm'}},
-                                                'type': 'object'},
-                     'ApplicationCharmResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationCharmResult'},
-                                                                            'type': 'array'}},
-                                                 'required': ['results'],
-                                                 'type': 'object'},
-                     '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'},
-                     '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'},
-                     'EntityString': {'additionalProperties': False,
-                                      'properties': {'tag': {'type': 'string'},
-                                                     'value': {'type': 'string'}},
-                                      'required': ['tag', 'value'],
-                                      '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'},
-                     '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'},
-                     'ModelResult': {'additionalProperties': False,
-                                     'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                    'name': {'type': 'string'},
-                                                    'type': {'type': 'string'},
-                                                    'uuid': {'type': 'string'}},
-                                     'required': ['name', 'uuid', 'type'],
-                                     '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'},
-                     'SetPodSpecParams': {'additionalProperties': False,
-                                          'properties': {'specs': {'items': {'$ref': '#/definitions/EntityString'},
-                                                                   'type': 'array'}},
-                                          'required': ['specs'],
-                                          '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'},
-                     'Version': {'additionalProperties': False,
-                                 'properties': {'version': {'$ref': '#/definitions/Binary'}},
-                                 'required': ['version'],
-                                 'type': 'object'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'Charm': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/ApplicationCharmResults'}},
-                              'type': 'object'},
-                    'CurrentModel': {'properties': {'Result': {'$ref': '#/definitions/ModelResult'}},
-                                     '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'},
-                    'SetPodSpec': {'properties': {'Params': {'$ref': '#/definitions/SetPodSpecParams'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                  'type': 'object'},
-                    'SetTools': {'properties': {'Params': {'$ref': '#/definitions/EntitiesVersion'},
-                                                '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'},
-                    '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[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='APIAddresses',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='APIHostPorts',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationCharmResults)
-    async def Charm(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ApplicationCharmResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='Charm',
-                   version=1,
-                   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='CAASOperator',
-                   request='CurrentModel',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   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='CAASOperator',
-                   request='ModelUUID',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='Remove',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPodSpec(self, specs):
-        '''
-        specs : typing.Sequence[~EntityString]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='SetPodSpec',
-                   version=1,
-                   params=_params)
-        _params['specs'] = specs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='SetStatus',
-                   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[~EntityVersion]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='SetTools',
-                   version=1,
-                   params=_params)
-        _params['agent-tools'] = agent_tools
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   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='CAASOperator',
-                   request='WatchAPIHostPorts',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperator',
-                   request='WatchUnits',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CAASOperatorProvisionerFacade(Type):
-    name = 'CAASOperatorProvisioner'
-    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'},
-                     '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'},
-                     'HostPort': {'additionalProperties': False,
-                                  'properties': {'Address': {'$ref': '#/definitions/Address'},
-                                                 'port': {'type': 'integer'}},
-                                  'required': ['Address', 'port'],
-                                  'type': 'object'},
-                     'KubernetesFilesystemAttachmentParams': {'additionalProperties': False,
-                                                              'properties': {'mount-point': {'type': 'string'},
-                                                                             'provider': {'type': 'string'},
-                                                                             'read-only': {'type': 'boolean'}},
-                                                              'required': ['provider'],
-                                                              'type': 'object'},
-                     'KubernetesFilesystemParams': {'additionalProperties': False,
-                                                    'properties': {'attachment': {'$ref': '#/definitions/KubernetesFilesystemAttachmentParams'},
-                                                                   'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                               'type': 'object'}},
-                                                                                  'type': 'object'},
-                                                                   'provider': {'type': 'string'},
-                                                                   'size': {'type': 'integer'},
-                                                                   'storagename': {'type': 'string'},
-                                                                   'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                            'type': 'object'}},
-                                                    'required': ['storagename',
-                                                                 'size',
-                                                                 'provider'],
-                                                    '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'},
-                     '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'},
-                     'OperatorProvisioningInfo': {'additionalProperties': False,
-                                                  'properties': {'api-addresses': {'items': {'type': 'string'},
-                                                                                   'type': 'array'},
-                                                                 'charm-storage': {'$ref': '#/definitions/KubernetesFilesystemParams'},
-                                                                 'image-path': {'type': 'string'},
-                                                                 'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                          'type': 'object'},
-                                                                 'version': {'$ref': '#/definitions/Number'}},
-                                                  'required': ['image-path',
-                                                               'version',
-                                                               'api-addresses',
-                                                               'charm-storage'],
-                                                  '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'}},
-     'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
-                                     'type': 'object'},
-                    'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
-                                     'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                  'type': 'object'},
-                    'OperatorProvisioningInfo': {'properties': {'Result': {'$ref': '#/definitions/OperatorProvisioningInfo'}},
-                                                 'type': 'object'},
-                    'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                          'type': 'object'},
-                    'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                          'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   request='APIAddresses',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   request='APIHostPorts',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   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='CAASOperatorProvisioner',
-                   request='ModelUUID',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(OperatorProvisioningInfo)
-    async def OperatorProvisioningInfo(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('KubernetesFilesystemParams'), str, typing.Mapping[str, str], _ForwardRef('Number')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   request='OperatorProvisioningInfo',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPasswords(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   request='SetPasswords',
-                   version=1,
-                   params=_params)
-        _params['changes'] = changes
-        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='CAASOperatorProvisioner',
-                   request='WatchAPIHostPorts',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchApplications(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASOperatorProvisioner',
-                   request='WatchApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CAASUnitProvisionerFacade(Type):
-    name = 'CAASUnitProvisioner'
-    version = 1
-    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'},
-                     'ApplicationGetConfigResults': {'additionalProperties': False,
-                                                     'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
-                                                                                'type': 'array'}},
-                                                     'required': ['Results'],
-                                                     'type': 'object'},
-                     'ApplicationUnitParams': {'additionalProperties': False,
-                                               'properties': {'address': {'type': 'string'},
-                                                              'data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                    'type': 'object'}},
-                                                                       'type': 'object'},
-                                                              'filesystem-info': {'items': {'$ref': '#/definitions/KubernetesFilesystemInfo'},
-                                                                                  'type': 'array'},
-                                                              'info': {'type': 'string'},
-                                                              'ports': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                              'provider-id': {'type': 'string'},
-                                                              'status': {'type': 'string'},
-                                                              'unit-tag': {'type': 'string'}},
-                                               'required': ['provider-id',
-                                                            'unit-tag',
-                                                            'address',
-                                                            'ports',
-                                                            'status',
-                                                            'info'],
-                                               'type': 'object'},
-                     'ConfigResult': {'additionalProperties': False,
-                                      'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'error': {'$ref': '#/definitions/Error'}},
-                                      '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'},
-                     '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'},
-                     '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'},
-                     'KubernetesDeviceParams': {'additionalProperties': False,
-                                                'properties': {'Attributes': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                              'type': 'object'},
-                                                               'Count': {'type': 'integer'},
-                                                               'Type': {'type': 'string'}},
-                                                'required': ['Type',
-                                                             'Count',
-                                                             'Attributes'],
-                                                'type': 'object'},
-                     'KubernetesFilesystemAttachmentParams': {'additionalProperties': False,
-                                                              'properties': {'mount-point': {'type': 'string'},
-                                                                             'provider': {'type': 'string'},
-                                                                             'read-only': {'type': 'boolean'}},
-                                                              'required': ['provider'],
-                                                              'type': 'object'},
-                     'KubernetesFilesystemInfo': {'additionalProperties': False,
-                                                  'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                       'type': 'object'}},
-                                                                          'type': 'object'},
-                                                                 'filesystem-id': {'type': 'string'},
-                                                                 'info': {'type': 'string'},
-                                                                 'mount-point': {'type': 'string'},
-                                                                 'pool': {'type': 'string'},
-                                                                 'read-only': {'type': 'boolean'},
-                                                                 'size': {'type': 'integer'},
-                                                                 'status': {'type': 'string'},
-                                                                 'storagename': {'type': 'string'},
-                                                                 'volume': {'$ref': '#/definitions/KubernetesVolumeInfo'}},
-                                                  'required': ['storagename',
-                                                               'pool',
-                                                               'size',
-                                                               'filesystem-id',
-                                                               'status',
-                                                               'info',
-                                                               'volume'],
-                                                  'type': 'object'},
-                     'KubernetesFilesystemParams': {'additionalProperties': False,
-                                                    'properties': {'attachment': {'$ref': '#/definitions/KubernetesFilesystemAttachmentParams'},
-                                                                   'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                               'type': 'object'}},
-                                                                                  'type': 'object'},
-                                                                   'provider': {'type': 'string'},
-                                                                   'size': {'type': 'integer'},
-                                                                   'storagename': {'type': 'string'},
-                                                                   'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                            'type': 'object'}},
-                                                    'required': ['storagename',
-                                                                 'size',
-                                                                 'provider'],
-                                                    'type': 'object'},
-                     'KubernetesProvisioningInfo': {'additionalProperties': False,
-                                                    'properties': {'constraints': {'$ref': '#/definitions/Value'},
-                                                                   'devices': {'items': {'$ref': '#/definitions/KubernetesDeviceParams'},
-                                                                               'type': 'array'},
-                                                                   'filesystems': {'items': {'$ref': '#/definitions/KubernetesFilesystemParams'},
-                                                                                   'type': 'array'},
-                                                                   'placement': {'type': 'string'},
-                                                                   'pod-spec': {'type': 'string'},
-                                                                   'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                            'type': 'object'},
-                                                                   'volumes': {'items': {'$ref': '#/definitions/KubernetesVolumeParams'},
-                                                                               'type': 'array'}},
-                                                    'required': ['pod-spec',
-                                                                 'constraints'],
-                                                    'type': 'object'},
-                     'KubernetesProvisioningInfoResult': {'additionalProperties': False,
-                                                          'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                         'result': {'$ref': '#/definitions/KubernetesProvisioningInfo'}},
-                                                          'required': ['result'],
-                                                          'type': 'object'},
-                     'KubernetesProvisioningInfoResults': {'additionalProperties': False,
-                                                           'properties': {'results': {'items': {'$ref': '#/definitions/KubernetesProvisioningInfoResult'},
-                                                                                      'type': 'array'}},
-                                                           'required': ['results'],
-                                                           'type': 'object'},
-                     'KubernetesVolumeAttachmentParams': {'additionalProperties': False,
-                                                          'properties': {'provider': {'type': 'string'},
-                                                                         'read-only': {'type': 'boolean'}},
-                                                          'required': ['provider'],
-                                                          'type': 'object'},
-                     'KubernetesVolumeInfo': {'additionalProperties': False,
-                                              'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                   'type': 'object'}},
-                                                                      'type': 'object'},
-                                                             'info': {'type': 'string'},
-                                                             'persistent': {'type': 'boolean'},
-                                                             'pool': {'type': 'string'},
-                                                             'size': {'type': 'integer'},
-                                                             'status': {'type': 'string'},
-                                                             'volume-id': {'type': 'string'}},
-                                              'required': ['volume-id',
-                                                           'size',
-                                                           'persistent',
-                                                           'status',
-                                                           'info'],
-                                              'type': 'object'},
-                     'KubernetesVolumeParams': {'additionalProperties': False,
-                                                'properties': {'attachment': {'$ref': '#/definitions/KubernetesVolumeAttachmentParams'},
-                                                               'attributes': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                           'type': 'object'}},
-                                                                              'type': 'object'},
-                                                               'provider': {'type': 'string'},
-                                                               'size': {'type': 'integer'},
-                                                               'storagename': {'type': 'string'},
-                                                               'tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                        'type': 'object'}},
-                                                'required': ['storagename',
-                                                             'size',
-                                                             'provider'],
-                                                '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'},
-                     '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'},
-                     'UpdateApplicationServiceArg': {'additionalProperties': False,
-                                                     'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'},
-                                                                                  'type': 'array'},
-                                                                    'application-tag': {'type': 'string'},
-                                                                    'provider-id': {'type': 'string'}},
-                                                     'required': ['application-tag',
-                                                                  'provider-id',
-                                                                  'addresses'],
-                                                     'type': 'object'},
-                     'UpdateApplicationServiceArgs': {'additionalProperties': False,
-                                                      'properties': {'args': {'items': {'$ref': '#/definitions/UpdateApplicationServiceArg'},
-                                                                              'type': 'array'}},
-                                                      'required': ['args'],
-                                                      'type': 'object'},
-                     'UpdateApplicationUnitArgs': {'additionalProperties': False,
-                                                   'properties': {'args': {'items': {'$ref': '#/definitions/UpdateApplicationUnits'},
-                                                                           'type': 'array'}},
-                                                   'required': ['args'],
-                                                   'type': 'object'},
-                     'UpdateApplicationUnits': {'additionalProperties': False,
-                                                'properties': {'application-tag': {'type': 'string'},
-                                                               'units': {'items': {'$ref': '#/definitions/ApplicationUnitParams'},
-                                                                         'type': 'array'}},
-                                                'required': ['application-tag',
-                                                             'units'],
-                                                '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               'type': 'object'}},
-     'properties': {'ApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
-                                           'type': 'object'},
-                    'ApplicationsScale': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/IntResults'}},
-                                          'type': 'object'},
-                    'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                            'Result': {'$ref': '#/definitions/LifeResults'}},
-                             'type': 'object'},
-                    'ProvisioningInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/KubernetesProvisioningInfoResults'}},
-                                         'type': 'object'},
-                    'SetOperatorStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'UpdateApplicationsService': {'properties': {'Params': {'$ref': '#/definitions/UpdateApplicationServiceArgs'},
-                                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                  'type': 'object'},
-                    'UpdateApplicationsUnits': {'properties': {'Params': {'$ref': '#/definitions/UpdateApplicationUnitArgs'},
-                                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                'type': 'object'},
-                    'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                          'type': 'object'},
-                    'WatchApplicationsScale': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                               'type': 'object'},
-                    'WatchPodSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                     'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ApplicationGetConfigResults)
-    async def ApplicationsConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='ApplicationsConfig',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IntResults)
-    async def ApplicationsScale(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~IntResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='ApplicationsScale',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='Life',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(KubernetesProvisioningInfoResults)
-    async def ProvisioningInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~KubernetesProvisioningInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='ProvisioningInfo',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetOperatorStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='SetOperatorStatus',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateApplicationsService(self, args):
-        '''
-        args : typing.Sequence[~UpdateApplicationServiceArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='UpdateApplicationsService',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateApplicationsUnits(self, args):
-        '''
-        args : typing.Sequence[~UpdateApplicationUnits]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='UpdateApplicationsUnits',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchApplications(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='WatchApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchApplicationsScale(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='WatchApplicationsScale',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchPodSpec(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CAASUnitProvisioner',
-                   request='WatchPodSpec',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        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[~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[~AddMachineParams]
-        Returns -> typing.Sequence[~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[~AddMachineParams]
-        Returns -> typing.Sequence[~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[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[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[~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[str]
-        Returns -> typing.Union[typing.Mapping[str, ~ApplicationStatus], str, typing.Mapping[str, ~MachineStatus], _ForwardRef('ModelStatusInfo'), typing.Mapping[str, ~ApplicationOfferStatus], typing.Sequence[~RelationStatus], typing.Mapping[str, ~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.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
-        '''
-        # 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[~AddMachineParams]
-        Returns -> typing.Sequence[~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[str, ~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'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~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[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[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[~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[str]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~StatusHistoryRequest]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[str, ~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[~Entity]
-        Returns -> typing.Sequence[~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[~CloudInstanceTypesConstraint]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~UpdateCloudCredential]
-        Returns -> typing.Sequence[~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[~UserCloud]
-        Returns -> typing.Sequence[~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 CredentialManagerFacade(Type):
-    name = 'CredentialManager'
-    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'},
-                     'InvalidateCredentialArg': {'additionalProperties': False,
-                                                 'properties': {'reason': {'type': 'string'}},
-                                                 'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'}},
-     'properties': {'InvalidateModelCredential': {'properties': {'Params': {'$ref': '#/definitions/InvalidateCredentialArg'},
-                                                                 'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                                  'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ErrorResult)
-    async def InvalidateModelCredential(self, reason):
-        '''
-        reason : str
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CredentialManager',
-                   request='InvalidateModelCredential',
-                   version=1,
-                   params=_params)
-        _params['reason'] = reason
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CrossControllerFacade(Type):
-    name = 'CrossController'
-    version = 1
-    schema =     {'definitions': {'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             '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'},
-                     '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': {'ControllerInfo': {'properties': {'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                       'type': 'object'},
-                    'WatchControllerInfo': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                            'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ControllerAPIInfoResults)
-    async def ControllerInfo(self):
-        '''
-
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossController',
-                   request='ControllerInfo',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchControllerInfo(self):
-        '''
-
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossController',
-                   request='WatchControllerInfo',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CrossModelRelationsFacade(Type):
-    name = 'CrossModelRelations'
-    version = 1
-    schema =     {'definitions': {'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'},
-                     'IngressNetworksChangeEvent': {'additionalProperties': False,
-                                                    'properties': {'application-token': {'type': 'string'},
-                                                                   'ingress-required': {'type': 'boolean'},
-                                                                   'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                                 'type': 'array'},
-                                                                   'networks': {'items': {'type': 'string'},
-                                                                                'type': 'array'},
-                                                                   'relation-token': {'type': 'string'}},
-                                                    'required': ['relation-token',
-                                                                 'application-token',
-                                                                 'ingress-required'],
-                                                    'type': 'object'},
-                     'IngressNetworksChanges': {'additionalProperties': False,
-                                                'properties': {'changes': {'items': {'$ref': '#/definitions/IngressNetworksChangeEvent'},
-                                                                           'type': 'array'}},
-                                                'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'OfferArg': {'additionalProperties': False,
-                                  'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                               'type': 'array'},
-                                                 'offer-uuid': {'type': 'string'}},
-                                  'required': ['offer-uuid'],
-                                  'type': 'object'},
-                     'OfferArgs': {'additionalProperties': False,
-                                   'properties': {'args': {'items': {'$ref': '#/definitions/OfferArg'},
-                                                           'type': 'array'}},
-                                   'required': ['args'],
-                                   'type': 'object'},
-                     'OfferStatusChange': {'additionalProperties': False,
-                                           'properties': {'offer-name': {'type': 'string'},
-                                                          'status': {'$ref': '#/definitions/EntityStatus'}},
-                                           'required': ['offer-name', 'status'],
-                                           'type': 'object'},
-                     'OfferStatusWatchResult': {'additionalProperties': False,
-                                                'properties': {'changes': {'items': {'$ref': '#/definitions/OfferStatusChange'},
-                                                                           'type': 'array'},
-                                                               'error': {'$ref': '#/definitions/Error'},
-                                                               'watcher-id': {'type': 'string'}},
-                                                'required': ['watcher-id',
-                                                             'changes'],
-                                                'type': 'object'},
-                     'OfferStatusWatchResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/OfferStatusWatchResult'},
-                                                                            'type': 'array'}},
-                                                 'required': ['results'],
-                                                 'type': 'object'},
-                     'RegisterRemoteRelationArg': {'additionalProperties': False,
-                                                   'properties': {'application-token': {'type': 'string'},
-                                                                  'local-endpoint-name': {'type': 'string'},
-                                                                  'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                                'type': 'array'},
-                                                                  'offer-uuid': {'type': 'string'},
-                                                                  'relation-token': {'type': 'string'},
-                                                                  'remote-endpoint': {'$ref': '#/definitions/RemoteEndpoint'},
-                                                                  'remote-space': {'$ref': '#/definitions/RemoteSpace'},
-                                                                  'source-model-tag': {'type': 'string'}},
-                                                   'required': ['application-token',
-                                                                'source-model-tag',
-                                                                'relation-token',
-                                                                'remote-endpoint',
-                                                                'remote-space',
-                                                                'offer-uuid',
-                                                                'local-endpoint-name'],
-                                                   'type': 'object'},
-                     'RegisterRemoteRelationArgs': {'additionalProperties': False,
-                                                    'properties': {'relations': {'items': {'$ref': '#/definitions/RegisterRemoteRelationArg'},
-                                                                                 'type': 'array'}},
-                                                    'required': ['relations'],
-                                                    'type': 'object'},
-                     'RegisterRemoteRelationResult': {'additionalProperties': False,
-                                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                     'result': {'$ref': '#/definitions/RemoteRelationDetails'}},
-                                                      'type': 'object'},
-                     'RegisterRemoteRelationResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/RegisterRemoteRelationResult'},
-                                                                                  'type': 'array'}},
-                                                       'type': 'object'},
-                     'RelationLifeSuspendedStatusChange': {'additionalProperties': False,
-                                                           'properties': {'key': {'type': 'string'},
-                                                                          'life': {'type': 'string'},
-                                                                          'suspended': {'type': 'boolean'},
-                                                                          'suspended-reason': {'type': 'string'}},
-                                                           'required': ['key',
-                                                                        'life',
-                                                                        'suspended',
-                                                                        'suspended-reason'],
-                                                           'type': 'object'},
-                     'RelationLifeSuspendedStatusWatchResult': {'additionalProperties': False,
-                                                                'properties': {'changes': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusChange'},
-                                                                                           'type': 'array'},
-                                                                               'error': {'$ref': '#/definitions/Error'},
-                                                                               'watcher-id': {'type': 'string'}},
-                                                                'required': ['watcher-id',
-                                                                             'changes'],
-                                                                'type': 'object'},
-                     'RelationStatusWatchResults': {'additionalProperties': False,
-                                                    'properties': {'results': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusWatchResult'},
-                                                                               'type': 'array'}},
-                                                    'required': ['results'],
-                                                    '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'},
-                     'RelationUnitsWatchResults': {'additionalProperties': False,
-                                                   'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'},
-                                                                              'type': 'array'}},
-                                                   'required': ['results'],
-                                                   'type': 'object'},
-                     'RemoteEndpoint': {'additionalProperties': False,
-                                        'properties': {'interface': {'type': 'string'},
-                                                       'limit': {'type': 'integer'},
-                                                       'name': {'type': 'string'},
-                                                       'role': {'type': 'string'}},
-                                        'required': ['name',
-                                                     'role',
-                                                     'interface',
-                                                     'limit'],
-                                        'type': 'object'},
-                     'RemoteEntityArg': {'additionalProperties': False,
-                                         'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                      'type': 'array'},
-                                                        'relation-token': {'type': 'string'}},
-                                         'required': ['relation-token'],
-                                         'type': 'object'},
-                     'RemoteEntityArgs': {'additionalProperties': False,
-                                          'properties': {'args': {'items': {'$ref': '#/definitions/RemoteEntityArg'},
-                                                                  'type': 'array'}},
-                                          'required': ['args'],
-                                          'type': 'object'},
-                     'RemoteRelationChangeEvent': {'additionalProperties': False,
-                                                   'properties': {'application-token': {'type': 'string'},
-                                                                  'changed-units': {'items': {'$ref': '#/definitions/RemoteRelationUnitChange'},
-                                                                                    'type': 'array'},
-                                                                  'departed-units': {'items': {'type': 'integer'},
-                                                                                     'type': 'array'},
-                                                                  'force-cleanup': {'type': 'boolean'},
-                                                                  'life': {'type': 'string'},
-                                                                  'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                                'type': 'array'},
-                                                                  'relation-token': {'type': 'string'},
-                                                                  'suspended': {'type': 'boolean'},
-                                                                  'suspended-reason': {'type': 'string'}},
-                                                   'required': ['relation-token',
-                                                                'application-token',
-                                                                'life'],
-                                                   'type': 'object'},
-                     'RemoteRelationDetails': {'additionalProperties': False,
-                                               'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                              'relation-token': {'type': 'string'}},
-                                               'required': ['relation-token'],
-                                               'type': 'object'},
-                     'RemoteRelationUnit': {'additionalProperties': False,
-                                            'properties': {'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                         'type': 'array'},
-                                                           'relation-token': {'type': 'string'},
-                                                           'unit': {'type': 'string'}},
-                                            'required': ['relation-token', 'unit'],
-                                            'type': 'object'},
-                     'RemoteRelationUnitChange': {'additionalProperties': False,
-                                                  'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                           'type': 'object'}},
-                                                                              'type': 'object'},
-                                                                 'unit-id': {'type': 'integer'}},
-                                                  'required': ['unit-id'],
-                                                  'type': 'object'},
-                     'RemoteRelationUnits': {'additionalProperties': False,
-                                             'properties': {'relation-units': {'items': {'$ref': '#/definitions/RemoteRelationUnit'},
-                                                                               'type': 'array'}},
-                                             'required': ['relation-units'],
-                                             'type': 'object'},
-                     'RemoteRelationsChanges': {'additionalProperties': False,
-                                                'properties': {'changes': {'items': {'$ref': '#/definitions/RemoteRelationChangeEvent'},
-                                                                           'type': 'array'}},
-                                                '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'},
-                     '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'},
-                     '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'},
-                     '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'},
-                     'UnitSettings': {'additionalProperties': False,
-                                      'properties': {'version': {'type': 'integer'}},
-                                      'required': ['version'],
-                                      'type': 'object'}},
-     'properties': {'PublishIngressNetworkChanges': {'properties': {'Params': {'$ref': '#/definitions/IngressNetworksChanges'},
-                                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                     'type': 'object'},
-                    'PublishRelationChanges': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationsChanges'},
-                                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                               'type': 'object'},
-                    'RegisterRemoteRelations': {'properties': {'Params': {'$ref': '#/definitions/RegisterRemoteRelationArgs'},
-                                                               'Result': {'$ref': '#/definitions/RegisterRemoteRelationResults'}},
-                                                'type': 'object'},
-                    'RelationUnitSettings': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationUnits'},
-                                                            'Result': {'$ref': '#/definitions/SettingsResults'}},
-                                             'type': 'object'},
-                    'WatchEgressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
-                                                                        'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                         'type': 'object'},
-                    'WatchOfferStatus': {'properties': {'Params': {'$ref': '#/definitions/OfferArgs'},
-                                                        'Result': {'$ref': '#/definitions/OfferStatusWatchResults'}},
-                                         'type': 'object'},
-                    'WatchRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
-                                                          'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}},
-                                           'type': 'object'},
-                    'WatchRelationsSuspendedStatus': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityArgs'},
-                                                                     'Result': {'$ref': '#/definitions/RelationStatusWatchResults'}},
-                                                      'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ErrorResults)
-    async def PublishIngressNetworkChanges(self, changes):
-        '''
-        changes : typing.Sequence[~IngressNetworksChangeEvent]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='PublishIngressNetworkChanges',
-                   version=1,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def PublishRelationChanges(self, changes):
-        '''
-        changes : typing.Sequence[~RemoteRelationChangeEvent]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='PublishRelationChanges',
-                   version=1,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RegisterRemoteRelationResults)
-    async def RegisterRemoteRelations(self, relations):
-        '''
-        relations : typing.Sequence[~RegisterRemoteRelationArg]
-        Returns -> typing.Sequence[~RegisterRemoteRelationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='RegisterRemoteRelations',
-                   version=1,
-                   params=_params)
-        _params['relations'] = relations
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SettingsResults)
-    async def RelationUnitSettings(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RemoteRelationUnit]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='RelationUnitSettings',
-                   version=1,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchEgressAddressesForRelations(self, args):
-        '''
-        args : typing.Sequence[~RemoteEntityArg]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='WatchEgressAddressesForRelations',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(OfferStatusWatchResults)
-    async def WatchOfferStatus(self, args):
-        '''
-        args : typing.Sequence[~OfferArg]
-        Returns -> typing.Sequence[~OfferStatusWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='WatchOfferStatus',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationUnitsWatchResults)
-    async def WatchRelationUnits(self, args):
-        '''
-        args : typing.Sequence[~RemoteEntityArg]
-        Returns -> typing.Sequence[~RelationUnitsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='WatchRelationUnits',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationStatusWatchResults)
-    async def WatchRelationsSuspendedStatus(self, args):
-        '''
-        args : typing.Sequence[~RemoteEntityArg]
-        Returns -> typing.Sequence[~RelationLifeSuspendedStatusWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CrossModelRelations',
-                   request='WatchRelationsSuspendedStatus',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        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'},
-                     'DeployerConnectionValues': {'additionalProperties': False,
-                                                  'properties': {'api-addresses': {'items': {'type': 'string'},
-                                                                                   'type': 'array'}},
-                                                  'required': ['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'},
-                    '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'},
-                    '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[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[~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(DeployerConnectionValues)
-    async def ConnectionInfo(self):
-        '''
-
-        Returns -> typing.Sequence[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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityPassword]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 ExternalControllerUpdaterFacade(Type):
-    name = 'ExternalControllerUpdater'
-    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'},
-                     'ExternalControllerInfo': {'additionalProperties': False,
-                                                'properties': {'addrs': {'items': {'type': 'string'},
-                                                                         'type': 'array'},
-                                                               'ca-cert': {'type': 'string'},
-                                                               'controller-alias': {'type': 'string'},
-                                                               'controller-tag': {'type': 'string'}},
-                                                'required': ['controller-tag',
-                                                             'controller-alias',
-                                                             'addrs',
-                                                             'ca-cert'],
-                                                'type': 'object'},
-                     'ExternalControllerInfoResult': {'additionalProperties': False,
-                                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                     'result': {'$ref': '#/definitions/ExternalControllerInfo'}},
-                                                      'required': ['result',
-                                                                   'error'],
-                                                      'type': 'object'},
-                     'ExternalControllerInfoResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/ExternalControllerInfoResult'},
-                                                                                  'type': 'array'}},
-                                                       'required': ['results'],
-                                                       'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'SetExternalControllerInfoParams': {'additionalProperties': False,
-                                                         'properties': {'info': {'$ref': '#/definitions/ExternalControllerInfo'}},
-                                                         'required': ['info'],
-                                                         'type': 'object'},
-                     'SetExternalControllersInfoParams': {'additionalProperties': False,
-                                                          'properties': {'controllers': {'items': {'$ref': '#/definitions/SetExternalControllerInfoParams'},
-                                                                                         'type': 'array'}},
-                                                          'required': ['controllers'],
-                                                          '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': {'ExternalControllerInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/ExternalControllerInfoResults'}},
-                                               'type': 'object'},
-                    'SetExternalControllerInfo': {'properties': {'Params': {'$ref': '#/definitions/SetExternalControllersInfoParams'},
-                                                                 'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                  'type': 'object'},
-                    'WatchExternalControllers': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                 'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ExternalControllerInfoResults)
-    async def ExternalControllerInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ExternalControllerInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ExternalControllerUpdater',
-                   request='ExternalControllerInfo',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetExternalControllerInfo(self, controllers):
-        '''
-        controllers : typing.Sequence[~SetExternalControllerInfoParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ExternalControllerUpdater',
-                   request='SetExternalControllerInfo',
-                   version=1,
-                   params=_params)
-        _params['controllers'] = controllers
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchExternalControllers(self):
-        '''
-
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ExternalControllerUpdater',
-                   request='WatchExternalControllers',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class FanConfigurerFacade(Type):
-    name = 'FanConfigurer'
-    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'},
-                     'FanConfigEntry': {'additionalProperties': False,
-                                        'properties': {'overlay': {'type': 'string'},
-                                                       'underlay': {'type': 'string'}},
-                                        'required': ['underlay', 'overlay'],
-                                        'type': 'object'},
-                     'FanConfigResult': {'additionalProperties': False,
-                                         'properties': {'fans': {'items': {'$ref': '#/definitions/FanConfigEntry'},
-                                                                 'type': 'array'}},
-                                         'required': ['fans'],
-                                         'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'NotifyWatcherId': {'type': 'string'},
-                                                          'error': {'$ref': '#/definitions/Error'}},
-                                           'required': ['NotifyWatcherId'],
-                                           'type': 'object'}},
-     'properties': {'FanConfig': {'properties': {'Result': {'$ref': '#/definitions/FanConfigResult'}},
-                                  'type': 'object'},
-                    'WatchForFanConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                 'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(FanConfigResult)
-    async def FanConfig(self):
-        '''
-
-        Returns -> typing.Sequence[~FanConfigEntry]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='FanConfigurer',
-                   request='FanConfig',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchForFanConfigChanges(self):
-        '''
-
-        Returns -> typing.Union[str, _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='FanConfigurer',
-                   request='WatchForFanConfigChanges',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class FirewallRulesFacade(Type):
-    name = 'FirewallRules'
-    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'},
-                     'FirewallRule': {'additionalProperties': False,
-                                      'properties': {'known-service': {'type': 'string'},
-                                                     'whitelist-cidrs': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                      'required': ['known-service'],
-                                      'type': 'object'},
-                     'FirewallRuleArgs': {'additionalProperties': False,
-                                          'properties': {'args': {'items': {'$ref': '#/definitions/FirewallRule'},
-                                                                  'type': 'array'}},
-                                          'required': ['args'],
-                                          'type': 'object'},
-                     'ListFirewallRulesResults': {'additionalProperties': False,
-                                                  'properties': {'Rules': {'items': {'$ref': '#/definitions/FirewallRule'},
-                                                                           'type': 'array'}},
-                                                  'required': ['Rules'],
-                                                  'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'}},
-     'properties': {'ListFirewallRules': {'properties': {'Result': {'$ref': '#/definitions/ListFirewallRulesResults'}},
-                                          'type': 'object'},
-                    'SetFirewallRules': {'properties': {'Params': {'$ref': '#/definitions/FirewallRuleArgs'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ListFirewallRulesResults)
-    async def ListFirewallRules(self):
-        '''
-
-        Returns -> typing.Sequence[~FirewallRule]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='FirewallRules',
-                   request='ListFirewallRules',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetFirewallRules(self, args):
-        '''
-        args : typing.Sequence[~FirewallRule]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='FirewallRules',
-                   request='SetFirewallRules',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        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[~SSHHostKeys]
-        Returns -> typing.Sequence[~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[str]
-        user : str
-        Returns -> typing.Sequence[~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[str]
-        user : str
-        Returns -> typing.Sequence[~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[str]
-        user : str
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~LogForwardingID]
-        Returns -> typing.Sequence[~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[~LogForwardingSetLastSentParam]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~ActionExecutionResult]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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'},
-                     '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'},
-                                                      'is-default-gateway': {'type': 'boolean'},
-                                                      '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'},
-                    '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[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[~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(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MachineAddresses]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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.Union[typing.Sequence[int], typing.Sequence[str], typing.Sequence[~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[str], 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, str, typing.Sequence[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'},
-                     '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'},
-                     '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'},
-                    'CheckMachines': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      '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[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(ErrorResults)
-    async def CheckMachines(self, model_tag):
-        '''
-        model_tag : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MigrationTarget',
-                   request='CheckMachines',
-                   version=1,
-                   params=_params)
-        _params['model-tag'] = model_tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Import(self, bytes_, charms, tools):
-        '''
-        bytes_ : typing.Sequence[int]
-        charms : typing.Sequence[str]
-        tools : typing.Sequence[~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[str, ~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[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[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[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 ModelUpgraderFacade(Type):
-    name = 'ModelUpgrader'
-    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'},
-                     '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'},
-                     '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'},
-                     'SetModelEnvironVersion': {'additionalProperties': False,
-                                                'properties': {'model-tag': {'type': 'string'},
-                                                               'version': {'type': 'integer'}},
-                                                'required': ['model-tag',
-                                                             'version'],
-                                                'type': 'object'},
-                     'SetModelEnvironVersions': {'additionalProperties': False,
-                                                 'properties': {'models': {'items': {'$ref': '#/definitions/SetModelEnvironVersion'},
-                                                                           'type': 'array'}},
-                                                 'type': 'object'},
-                     'SetStatus': {'additionalProperties': False,
-                                   'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'},
-                                                               'type': 'array'}},
-                                   'required': ['entities'],
-                                   'type': 'object'}},
-     'properties': {'ModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                           'Result': {'$ref': '#/definitions/IntResults'}},
-                                            'type': 'object'},
-                    'ModelTargetEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                 'Result': {'$ref': '#/definitions/IntResults'}},
-                                                  'type': 'object'},
-                    'SetModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelEnvironVersions'},
-                                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                               'type': 'object'},
-                    'SetModelStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'WatchModelEnvironVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                 'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(IntResults)
-    async def ModelEnvironVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~IntResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelUpgrader',
-                   request='ModelEnvironVersion',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IntResults)
-    async def ModelTargetEnvironVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~IntResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelUpgrader',
-                   request='ModelTargetEnvironVersion',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetModelEnvironVersion(self, models):
-        '''
-        models : typing.Sequence[~SetModelEnvironVersion]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelUpgrader',
-                   request='SetModelEnvironVersion',
-                   version=1,
-                   params=_params)
-        _params['models'] = models
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetModelStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelUpgrader',
-                   request='SetModelStatus',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchModelEnvironVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelUpgrader',
-                   request='WatchModelEnvironVersion',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        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 OfferStatusWatcherFacade(Type):
-    name = 'OfferStatusWatcher'
-    version = 1
-    schema =     {'definitions': {'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'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'OfferStatusChange': {'additionalProperties': False,
-                                           'properties': {'offer-name': {'type': 'string'},
-                                                          'status': {'$ref': '#/definitions/EntityStatus'}},
-                                           'required': ['offer-name', 'status'],
-                                           'type': 'object'},
-                     'OfferStatusWatchResult': {'additionalProperties': False,
-                                                'properties': {'changes': {'items': {'$ref': '#/definitions/OfferStatusChange'},
-                                                                           'type': 'array'},
-                                                               'error': {'$ref': '#/definitions/Error'},
-                                                               'watcher-id': {'type': 'string'}},
-                                                'required': ['watcher-id',
-                                                             'changes'],
-                                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/OfferStatusWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(OfferStatusWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[~OfferStatusChange], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='OfferStatusWatcher',
-                   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='OfferStatusWatcher',
-                   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[str]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~LookUpPayloadArg]
-        Returns -> typing.Sequence[~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[~SetPayloadStatusArg]
-        Returns -> typing.Sequence[~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[~Payload]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 RelationStatusWatcherFacade(Type):
-    name = 'RelationStatusWatcher'
-    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'},
-                     'RelationLifeSuspendedStatusChange': {'additionalProperties': False,
-                                                           'properties': {'key': {'type': 'string'},
-                                                                          'life': {'type': 'string'},
-                                                                          'suspended': {'type': 'boolean'},
-                                                                          'suspended-reason': {'type': 'string'}},
-                                                           'required': ['key',
-                                                                        'life',
-                                                                        'suspended',
-                                                                        'suspended-reason'],
-                                                           'type': 'object'},
-                     'RelationLifeSuspendedStatusWatchResult': {'additionalProperties': False,
-                                                                'properties': {'changes': {'items': {'$ref': '#/definitions/RelationLifeSuspendedStatusChange'},
-                                                                                           'type': 'array'},
-                                                                               'error': {'$ref': '#/definitions/Error'},
-                                                                               'watcher-id': {'type': 'string'}},
-                                                                'required': ['watcher-id',
-                                                                             'changes'],
-                                                                'type': 'object'}},
-     'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationLifeSuspendedStatusWatchResult'}},
-                             'type': 'object'},
-                    'Stop': {'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(RelationLifeSuspendedStatusWatchResult)
-    async def Next(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[~RelationLifeSuspendedStatusChange], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RelationStatusWatcher',
-                   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='RelationStatusWatcher',
-                   request='Stop',
-                   version=1,
-                   params=_params)
-
-        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 RemoteRelationsFacade(Type):
-    name = 'RemoteRelations'
-    version = 1
-    schema =     {'definitions': {'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  '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'},
-                     'EntityMacaroonArg': {'additionalProperties': False,
-                                           'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                          'tag': {'type': 'string'}},
-                                           'required': ['macaroon', 'tag'],
-                                           'type': 'object'},
-                     'EntityMacaroonArgs': {'additionalProperties': False,
-                                            'properties': {'Args': {'items': {'$ref': '#/definitions/EntityMacaroonArg'},
-                                                                    'type': 'array'}},
-                                            'required': ['Args'],
-                                            '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'},
-                     'GetTokenArg': {'additionalProperties': False,
-                                     'properties': {'tag': {'type': 'string'}},
-                                     'required': ['tag'],
-                                     'type': 'object'},
-                     'GetTokenArgs': {'additionalProperties': False,
-                                      'properties': {'Args': {'items': {'$ref': '#/definitions/GetTokenArg'},
-                                                              'type': 'array'}},
-                                      'required': ['Args'],
-                                      'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'RelationUnit': {'additionalProperties': False,
-                                      'properties': {'relation': {'type': 'string'},
-                                                     'unit': {'type': 'string'}},
-                                      'required': ['relation', 'unit'],
-                                      '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'},
-                     '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'},
-                     'RemoteApplication': {'additionalProperties': False,
-                                           'properties': {'is-consumer-proxy': {'type': 'boolean'},
-                                                          'life': {'type': 'string'},
-                                                          'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                          'model-uuid': {'type': 'string'},
-                                                          'name': {'type': 'string'},
-                                                          'offer-uuid': {'type': 'string'},
-                                                          'status': {'type': 'string'}},
-                                           'required': ['name',
-                                                        'offer-uuid',
-                                                        'model-uuid',
-                                                        'is-consumer-proxy'],
-                                           'type': 'object'},
-                     'RemoteApplicationResult': {'additionalProperties': False,
-                                                 'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                'result': {'$ref': '#/definitions/RemoteApplication'}},
-                                                 'type': 'object'},
-                     'RemoteApplicationResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/RemoteApplicationResult'},
-                                                                             'type': 'array'}},
-                                                  'type': 'object'},
-                     'RemoteEndpoint': {'additionalProperties': False,
-                                        'properties': {'interface': {'type': 'string'},
-                                                       'limit': {'type': 'integer'},
-                                                       'name': {'type': 'string'},
-                                                       'role': {'type': 'string'}},
-                                        'required': ['name',
-                                                     'role',
-                                                     'interface',
-                                                     'limit'],
-                                        'type': 'object'},
-                     'RemoteEntityTokenArg': {'additionalProperties': False,
-                                              'properties': {'tag': {'type': 'string'},
-                                                             'token': {'type': 'string'}},
-                                              'required': ['tag'],
-                                              'type': 'object'},
-                     'RemoteEntityTokenArgs': {'additionalProperties': False,
-                                               'properties': {'Args': {'items': {'$ref': '#/definitions/RemoteEntityTokenArg'},
-                                                                       'type': 'array'}},
-                                               'required': ['Args'],
-                                               'type': 'object'},
-                     'RemoteRelation': {'additionalProperties': False,
-                                        'properties': {'application-name': {'type': 'string'},
-                                                       'endpoint': {'$ref': '#/definitions/RemoteEndpoint'},
-                                                       'id': {'type': 'integer'},
-                                                       'key': {'type': 'string'},
-                                                       'life': {'type': 'string'},
-                                                       'remote-application-name': {'type': 'string'},
-                                                       'remote-endpoint-name': {'type': 'string'},
-                                                       'source-model-uuid': {'type': 'string'},
-                                                       'suspended': {'type': 'boolean'}},
-                                        'required': ['life',
-                                                     'suspended',
-                                                     'id',
-                                                     'key',
-                                                     'application-name',
-                                                     'endpoint',
-                                                     'remote-application-name',
-                                                     'remote-endpoint-name',
-                                                     'source-model-uuid'],
-                                        'type': 'object'},
-                     'RemoteRelationChangeEvent': {'additionalProperties': False,
-                                                   'properties': {'application-token': {'type': 'string'},
-                                                                  'changed-units': {'items': {'$ref': '#/definitions/RemoteRelationUnitChange'},
-                                                                                    'type': 'array'},
-                                                                  'departed-units': {'items': {'type': 'integer'},
-                                                                                     'type': 'array'},
-                                                                  'force-cleanup': {'type': 'boolean'},
-                                                                  'life': {'type': 'string'},
-                                                                  'macaroons': {'items': {'$ref': '#/definitions/Macaroon'},
-                                                                                'type': 'array'},
-                                                                  'relation-token': {'type': 'string'},
-                                                                  'suspended': {'type': 'boolean'},
-                                                                  'suspended-reason': {'type': 'string'}},
-                                                   'required': ['relation-token',
-                                                                'application-token',
-                                                                'life'],
-                                                   'type': 'object'},
-                     'RemoteRelationResult': {'additionalProperties': False,
-                                              'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                             'result': {'$ref': '#/definitions/RemoteRelation'}},
-                                              'type': 'object'},
-                     'RemoteRelationResults': {'additionalProperties': False,
-                                               'properties': {'results': {'items': {'$ref': '#/definitions/RemoteRelationResult'},
-                                                                          'type': 'array'}},
-                                               'required': ['results'],
-                                               'type': 'object'},
-                     'RemoteRelationUnitChange': {'additionalProperties': False,
-                                                  'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                           'type': 'object'}},
-                                                                              'type': 'object'},
-                                                                 'unit-id': {'type': 'integer'}},
-                                                  'required': ['unit-id'],
-                                                  'type': 'object'},
-                     'RemoteRelationsChanges': {'additionalProperties': False,
-                                                'properties': {'changes': {'items': {'$ref': '#/definitions/RemoteRelationChangeEvent'},
-                                                                           'type': 'array'}},
-                                                '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'},
-                     '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'},
-                     'TokenResult': {'additionalProperties': False,
-                                     'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                    'token': {'type': 'string'}},
-                                     'type': 'object'},
-                     'TokenResults': {'additionalProperties': False,
-                                      'properties': {'results': {'items': {'$ref': '#/definitions/TokenResult'},
-                                                                 'type': 'array'}},
-                                      'type': 'object'},
-                     'UnitSettings': {'additionalProperties': False,
-                                      'properties': {'version': {'type': 'integer'}},
-                                      'required': ['version'],
-                                      'type': 'object'}},
-     'properties': {'ConsumeRemoteRelationChanges': {'properties': {'Params': {'$ref': '#/definitions/RemoteRelationsChanges'},
-                                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                     'type': 'object'},
-                    'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                                   'type': 'object'},
-                    'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
-                                         'type': 'object'},
-                    'ExportEntities': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/TokenResults'}},
-                                       'type': 'object'},
-                    'GetTokens': {'properties': {'Params': {'$ref': '#/definitions/GetTokenArgs'},
-                                                 'Result': {'$ref': '#/definitions/StringResults'}},
-                                  'type': 'object'},
-                    'ImportRemoteEntities': {'properties': {'Params': {'$ref': '#/definitions/RemoteEntityTokenArgs'},
-                                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                             'type': 'object'},
-                    'RelationUnitSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'},
-                                                            'Result': {'$ref': '#/definitions/SettingsResults'}},
-                                             'type': 'object'},
-                    'Relations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/RemoteRelationResults'}},
-                                  'type': 'object'},
-                    'RemoteApplications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/RemoteApplicationResults'}},
-                                           'type': 'object'},
-                    'SaveMacaroons': {'properties': {'Params': {'$ref': '#/definitions/EntityMacaroonArgs'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'SetRemoteApplicationsStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                    'type': 'object'},
-                    'WatchLocalRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}},
-                                                'type': 'object'},
-                    'WatchRemoteApplicationRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                       'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                        'type': 'object'},
-                    'WatchRemoteApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                                'type': 'object'},
-                    'WatchRemoteRelations': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                             'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ErrorResults)
-    async def ConsumeRemoteRelationChanges(self, changes):
-        '''
-        changes : typing.Sequence[~RemoteRelationChangeEvent]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='ConsumeRemoteRelationChanges',
-                   version=1,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerAPIInfoResults)
-    async def ControllerAPIInfoForModels(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='ControllerAPIInfoForModels',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerConfigResult)
-    async def ControllerConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='ControllerConfig',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(TokenResults)
-    async def ExportEntities(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~TokenResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='ExportEntities',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def GetTokens(self, args):
-        '''
-        args : typing.Sequence[~GetTokenArg]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='GetTokens',
-                   version=1,
-                   params=_params)
-        _params['Args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ImportRemoteEntities(self, args):
-        '''
-        args : typing.Sequence[~RemoteEntityTokenArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='ImportRemoteEntities',
-                   version=1,
-                   params=_params)
-        _params['Args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(SettingsResults)
-    async def RelationUnitSettings(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='RelationUnitSettings',
-                   version=1,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RemoteRelationResults)
-    async def Relations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RemoteRelationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='Relations',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RemoteApplicationResults)
-    async def RemoteApplications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RemoteApplicationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='RemoteApplications',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SaveMacaroons(self, args):
-        '''
-        args : typing.Sequence[~EntityMacaroonArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='SaveMacaroons',
-                   version=1,
-                   params=_params)
-        _params['Args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetRemoteApplicationsStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='SetRemoteApplicationsStatus',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationUnitsWatchResults)
-    async def WatchLocalRelationUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RelationUnitsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='WatchLocalRelationUnits',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchRemoteApplicationRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='WatchRemoteApplicationRelations',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchRemoteApplications(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='WatchRemoteApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchRemoteRelations(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='RemoteRelations',
-                   request='WatchRemoteRelations',
-                   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'},
-                                                                  'force': {'type': 'boolean'},
-                                                                  'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                                  'url': {'type': 'string'}},
-                                                   'required': ['url',
-                                                                'channel',
-                                                                'macaroon',
-                                                                'force'],
-                                                   '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[~CharmResource]
-        Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence[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[~Entity]
-        Returns -> typing.Sequence[~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[str]
-        Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~SingularClaim]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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 UpgradeSeriesFacade(Type):
-    name = 'UpgradeSeries'
-    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'},
-                     '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'},
-                     'PinApplicationResult': {'additionalProperties': False,
-                                              'properties': {'application-name': {'type': 'string'},
-                                                             'error': {'$ref': '#/definitions/Error'}},
-                                              'required': ['application-name'],
-                                              'type': 'object'},
-                     'PinApplicationsResults': {'additionalProperties': False,
-                                                'properties': {'results': {'items': {'$ref': '#/definitions/PinApplicationResult'},
-                                                                           'type': 'array'}},
-                                                'required': ['results'],
-                                                'type': 'object'},
-                     'PinnedLeadershipResult': {'additionalProperties': False,
-                                                'properties': {'result': {'patternProperties': {'.*': {'items': {'type': 'string'},
-                                                                                                       'type': 'array'}},
-                                                                          'type': 'object'}},
-                                                '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'},
-                     'UpdateSeriesArg': {'additionalProperties': False,
-                                         'properties': {'force': {'type': 'boolean'},
-                                                        'series': {'type': 'string'},
-                                                        'tag': {'$ref': '#/definitions/Entity'}},
-                                         'required': ['tag', 'force', 'series'],
-                                         'type': 'object'},
-                     'UpdateSeriesArgs': {'additionalProperties': False,
-                                          'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
-                                                                  'type': 'array'}},
-                                          'required': ['args'],
-                                          'type': 'object'},
-                     'UpgradeSeriesStartUnitCompletionParam': {'additionalProperties': False,
-                                                               'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'},
-                                                                                           'type': 'array'},
-                                                                              'message': {'type': 'string'}},
-                                                               'required': ['entities',
-                                                                            'message'],
-                                                               'type': 'object'},
-                     'UpgradeSeriesStatusParam': {'additionalProperties': False,
-                                                  'properties': {'entity': {'$ref': '#/definitions/Entity'},
-                                                                 'message': {'type': 'string'},
-                                                                 'status': {'type': 'string'}},
-                                                  'required': ['entity',
-                                                               'status',
-                                                               'message'],
-                                                  'type': 'object'},
-                     'UpgradeSeriesStatusParams': {'additionalProperties': False,
-                                                   'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusParam'},
-                                                                             'type': 'array'}},
-                                                   'required': ['params'],
-                                                   'type': 'object'},
-                     'UpgradeSeriesStatusResult': {'additionalProperties': False,
-                                                   'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                  'status': {'type': 'string'}},
-                                                   'type': 'object'},
-                     'UpgradeSeriesStatusResults': {'additionalProperties': False,
-                                                    'properties': {'results': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusResult'},
-                                                                               'type': 'array'}},
-                                                    'type': 'object'}},
-     'properties': {'FinishUpgradeSeries': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
-                                                           'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                            'type': 'object'},
-                    'MachineStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
-                                      'type': 'object'},
-                    'PinMachineApplications': {'properties': {'Result': {'$ref': '#/definitions/PinApplicationsResults'}},
-                                               'type': 'object'},
-                    'PinnedLeadership': {'properties': {'Result': {'$ref': '#/definitions/PinnedLeadershipResult'}},
-                                         'type': 'object'},
-                    'SetMachineStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         'type': 'object'},
-                    'SetUpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
-                                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                   'type': 'object'},
-                    'StartUnitCompletion': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStartUnitCompletionParam'},
-                                                           'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                            'type': 'object'},
-                    'TargetSeries': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/StringResults'}},
-                                     'type': 'object'},
-                    'UnitsCompleted': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/EntitiesResults'}},
-                                       'type': 'object'},
-                    'UnitsPrepared': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/EntitiesResults'}},
-                                      'type': 'object'},
-                    'UnpinMachineApplications': {'properties': {'Result': {'$ref': '#/definitions/PinApplicationsResults'}},
-                                                 'type': 'object'},
-                    'UpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
-                                                'type': 'object'},
-                    'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                       'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                        'type': 'object'}},
-     'type': 'object'}
-
-
-    @ReturnMapping(ErrorResults)
-    async def FinishUpgradeSeries(self, args):
-        '''
-        args : typing.Sequence[~UpdateSeriesArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='FinishUpgradeSeries',
-                   version=1,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpgradeSeriesStatusResults)
-    async def MachineStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='MachineStatus',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(PinApplicationsResults)
-    async def PinMachineApplications(self):
-        '''
-
-        Returns -> typing.Sequence[~PinApplicationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='PinMachineApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(PinnedLeadershipResult)
-    async def PinnedLeadership(self):
-        '''
-
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='PinnedLeadership',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetMachineStatus(self, params):
-        '''
-        params : typing.Sequence[~UpgradeSeriesStatusParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='SetMachineStatus',
-                   version=1,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetUpgradeSeriesUnitStatus(self, params):
-        '''
-        params : typing.Sequence[~UpgradeSeriesStatusParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='SetUpgradeSeriesUnitStatus',
-                   version=1,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def StartUnitCompletion(self, entities, message):
-        '''
-        entities : typing.Sequence[~Entity]
-        message : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='StartUnitCompletion',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        _params['message'] = message
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def TargetSeries(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='TargetSeries',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(EntitiesResults)
-    async def UnitsCompleted(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~EntitiesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='UnitsCompleted',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(EntitiesResults)
-    async def UnitsPrepared(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~EntitiesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='UnitsPrepared',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(PinApplicationsResults)
-    async def UnpinMachineApplications(self):
-        '''
-
-        Returns -> typing.Sequence[~PinApplicationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='UnpinMachineApplications',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpgradeSeriesStatusResults)
-    async def UpgradeSeriesUnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='UpgradeSeriesUnitStatus',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchUpgradeSeriesNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UpgradeSeries',
-                   request='WatchUpgradeSeriesNotifications',
-                   version=1,
-                   params=_params)
-        _params['entities'] = entities
-        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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityVersion]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~AddUser]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityPassword]
-        Returns -> typing.Sequence[~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[~Entity]
-        include_disabled : bool
-        Returns -> typing.Sequence[~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
-
-
-
-class VolumeAttachmentPlansWatcherFacade(Type):
-    name = 'VolumeAttachmentPlansWatcher'
-    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'},
-                     '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[~MachineStorageId], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='VolumeAttachmentPlansWatcher',
-                   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='VolumeAttachmentPlansWatcher',
-                   request='Stop',
-                   version=1,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
diff --git a/modules/libjuju/juju/client/_client2.py b/modules/libjuju/juju/client/_client2.py
deleted file mode 100644
index 416faab..0000000
--- a/modules/libjuju/juju/client/_client2.py
+++ /dev/null
@@ -1,7535 +0,0 @@
-# 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.facade import ReturnMapping, Type
-
-
-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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Action]
-        Returns -> typing.Sequence[~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[str]
-        Returns -> typing.Sequence[~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[str]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[str]
-        commands : str
-        machines : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~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[str]
-        commands : str
-        machines : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~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': {'cacertificates': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                  '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'},
-                     'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  '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'},
-                                                         'controller-api-port': {'type': 'integer'},
-                                                         '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'},
-                    'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                                   '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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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(ControllerAPIInfoResults)
-    async def ControllerAPIInfoForModels(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Agent',
-                   request='ControllerAPIInfoForModels',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerConfigResult)
-    async def ControllerConfig(self):
-        '''
-
-        Returns -> typing.Mapping[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[~Entity]
-        Returns -> typing.Sequence[~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[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[~EntityPassword]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityAnnotations]
-        Returns -> typing.Sequence[~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[str]
-        Returns -> typing.Mapping[str, ~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[~Placement]
-        Returns -> typing.Sequence[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[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[~ApplicationDeploy]
-        Returns -> typing.Sequence[~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[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[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[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[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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~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[~ApplicationMetricCredential]
-        Returns -> typing.Sequence[~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[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[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 ApplicationOffersFacade(Type):
-    name = 'ApplicationOffers'
-    version = 2
-    schema =     {'definitions': {'AddApplicationOffer': {'additionalProperties': False,
-                                             'properties': {'application-description': {'type': 'string'},
-                                                            'application-name': {'type': 'string'},
-                                                            'endpoints': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                          'type': 'object'},
-                                                            'model-tag': {'type': 'string'},
-                                                            'offer-name': {'type': 'string'}},
-                                             'required': ['model-tag',
-                                                          'offer-name',
-                                                          'application-name',
-                                                          'application-description',
-                                                          'endpoints'],
-                                             'type': 'object'},
-                     'AddApplicationOffers': {'additionalProperties': False,
-                                              'properties': {'Offers': {'items': {'$ref': '#/definitions/AddApplicationOffer'},
-                                                                        'type': 'array'}},
-                                              'required': ['Offers'],
-                                              'type': 'object'},
-                     'ApplicationOfferAdminDetails': {'additionalProperties': False,
-                                                      'properties': {'ApplicationOfferDetails': {'$ref': '#/definitions/ApplicationOfferDetails'},
-                                                                     'application-name': {'type': 'string'},
-                                                                     'charm-url': {'type': 'string'},
-                                                                     'connections': {'items': {'$ref': '#/definitions/OfferConnection'},
-                                                                                     'type': 'array'}},
-                                                      'required': ['ApplicationOfferDetails',
-                                                                   'application-name',
-                                                                   'charm-url'],
-                                                      'type': 'object'},
-                     'ApplicationOfferDetails': {'additionalProperties': False,
-                                                 'properties': {'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'},
-                                                                'offer-uuid': {'type': 'string'},
-                                                                'source-model-tag': {'type': 'string'},
-                                                                'spaces': {'items': {'$ref': '#/definitions/RemoteSpace'},
-                                                                           'type': 'array'},
-                                                                'users': {'items': {'$ref': '#/definitions/OfferUserDetails'},
-                                                                          'type': 'array'}},
-                                                 'required': ['source-model-tag',
-                                                              'offer-uuid',
-                                                              'offer-url',
-                                                              'offer-name',
-                                                              'application-description'],
-                                                 'type': 'object'},
-                     'ApplicationOfferResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'result': {'$ref': '#/definitions/ApplicationOfferAdminDetails'}},
-                                                'type': 'object'},
-                     'ApplicationOffersResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationOfferResult'},
-                                                                             'type': 'array'}},
-                                                  'type': 'object'},
-                     'ConsumeOfferDetails': {'additionalProperties': False,
-                                             'properties': {'external-controller': {'$ref': '#/definitions/ExternalControllerInfo'},
-                                                            'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                            'offer': {'$ref': '#/definitions/ApplicationOfferDetails'}},
-                                             'type': 'object'},
-                     'ConsumeOfferDetailsResult': {'additionalProperties': False,
-                                                   'properties': {'ConsumeOfferDetails': {'$ref': '#/definitions/ConsumeOfferDetails'},
-                                                                  'error': {'$ref': '#/definitions/Error'}},
-                                                   'required': ['ConsumeOfferDetails'],
-                                                   'type': 'object'},
-                     'ConsumeOfferDetailsResults': {'additionalProperties': False,
-                                                    'properties': {'results': {'items': {'$ref': '#/definitions/ConsumeOfferDetailsResult'},
-                                                                               'type': 'array'}},
-                                                    'type': 'object'},
-                     'DestroyApplicationOffers': {'additionalProperties': False,
-                                                  'properties': {'force': {'type': 'boolean'},
-                                                                 'offer-urls': {'items': {'type': 'string'},
-                                                                                'type': 'array'}},
-                                                  'required': ['offer-urls'],
-                                                  'type': 'object'},
-                     'EndpointFilterAttributes': {'additionalProperties': False,
-                                                  'properties': {'interface': {'type': 'string'},
-                                                                 'name': {'type': 'string'},
-                                                                 'role': {'type': 'string'}},
-                                                  'required': ['role',
-                                                               'interface',
-                                                               'name'],
-                                                  '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'},
-                     'ExternalControllerInfo': {'additionalProperties': False,
-                                                'properties': {'addrs': {'items': {'type': 'string'},
-                                                                         'type': 'array'},
-                                                               'ca-cert': {'type': 'string'},
-                                                               'controller-alias': {'type': 'string'},
-                                                               'controller-tag': {'type': 'string'}},
-                                                'required': ['controller-tag',
-                                                             'controller-alias',
-                                                             'addrs',
-                                                             'ca-cert'],
-                                                'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'ModifyOfferAccess': {'additionalProperties': False,
-                                           'properties': {'access': {'type': 'string'},
-                                                          'action': {'type': 'string'},
-                                                          'offer-url': {'type': 'string'},
-                                                          'user-tag': {'type': 'string'}},
-                                           'required': ['user-tag',
-                                                        'action',
-                                                        'access',
-                                                        'offer-url'],
-                                           'type': 'object'},
-                     'ModifyOfferAccessRequest': {'additionalProperties': False,
-                                                  'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyOfferAccess'},
-                                                                             'type': 'array'}},
-                                                  'required': ['changes'],
-                                                  'type': 'object'},
-                     'OfferConnection': {'additionalProperties': False,
-                                         'properties': {'endpoint': {'type': 'string'},
-                                                        'ingress-subnets': {'items': {'type': 'string'},
-                                                                            'type': 'array'},
-                                                        'relation-id': {'type': 'integer'},
-                                                        'source-model-tag': {'type': 'string'},
-                                                        'status': {'$ref': '#/definitions/EntityStatus'},
-                                                        'username': {'type': 'string'}},
-                                         'required': ['source-model-tag',
-                                                      'relation-id',
-                                                      'username',
-                                                      'endpoint',
-                                                      'status',
-                                                      'ingress-subnets'],
-                                         'type': 'object'},
-                     'OfferFilter': {'additionalProperties': False,
-                                     'properties': {'allowed-users': {'items': {'type': 'string'},
-                                                                      'type': 'array'},
-                                                    'application-description': {'type': 'string'},
-                                                    'application-name': {'type': 'string'},
-                                                    'application-user': {'type': 'string'},
-                                                    'connected-users': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                    'endpoints': {'items': {'$ref': '#/definitions/EndpointFilterAttributes'},
-                                                                  'type': 'array'},
-                                                    'model-name': {'type': 'string'},
-                                                    'offer-name': {'type': 'string'},
-                                                    'owner-name': {'type': 'string'}},
-                                     'required': ['owner-name',
-                                                  'model-name',
-                                                  'offer-name',
-                                                  'application-name',
-                                                  'application-description',
-                                                  'application-user',
-                                                  'endpoints',
-                                                  'connected-users',
-                                                  'allowed-users'],
-                                     'type': 'object'},
-                     'OfferFilters': {'additionalProperties': False,
-                                      'properties': {'Filters': {'items': {'$ref': '#/definitions/OfferFilter'},
-                                                                 'type': 'array'}},
-                                      'required': ['Filters'],
-                                      'type': 'object'},
-                     'OfferURLs': {'additionalProperties': False,
-                                   'properties': {'offer-urls': {'items': {'type': 'string'},
-                                                                 'type': 'array'}},
-                                   'type': 'object'},
-                     'OfferUserDetails': {'additionalProperties': False,
-                                          'properties': {'access': {'type': 'string'},
-                                                         'display-name': {'type': 'string'},
-                                                         'user': {'type': 'string'}},
-                                          'required': ['user',
-                                                       'display-name',
-                                                       'access'],
-                                          'type': 'object'},
-                     'QueryApplicationOffersResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationOfferAdminDetails'},
-                                                                                  'type': 'array'}},
-                                                       'required': ['results'],
-                                                       'type': 'object'},
-                     'RemoteApplicationInfo': {'additionalProperties': False,
-                                               'properties': {'description': {'type': 'string'},
-                                                              'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
-                                                                            'type': 'array'},
-                                                              'icon-url-path': {'type': 'string'},
-                                                              'model-tag': {'type': 'string'},
-                                                              'name': {'type': 'string'},
-                                                              'offer-url': {'type': 'string'},
-                                                              'source-model-label': {'type': 'string'}},
-                                               'required': ['model-tag',
-                                                            'name',
-                                                            'description',
-                                                            'offer-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'}},
-                                        'required': ['name',
-                                                     'role',
-                                                     'interface',
-                                                     'limit'],
-                                        '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'},
-                     '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': {'ApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
-                                                         'Result': {'$ref': '#/definitions/ApplicationOffersResults'}},
-                                          'type': 'object'},
-                    'DestroyOffers': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationOffers'},
-                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                      'type': 'object'},
-                    'FindApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferFilters'},
-                                                             'Result': {'$ref': '#/definitions/QueryApplicationOffersResults'}},
-                                              'type': 'object'},
-                    'GetConsumeDetails': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
-                                                         'Result': {'$ref': '#/definitions/ConsumeOfferDetailsResults'}},
-                                          'type': 'object'},
-                    'ListApplicationOffers': {'properties': {'Params': {'$ref': '#/definitions/OfferFilters'},
-                                                             'Result': {'$ref': '#/definitions/QueryApplicationOffersResults'}},
-                                              'type': 'object'},
-                    'ModifyOfferAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyOfferAccessRequest'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'Offer': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationOffers'},
-                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                              'type': 'object'},
-                    'RemoteApplicationInfo': {'properties': {'Params': {'$ref': '#/definitions/OfferURLs'},
-                                                             'Result': {'$ref': '#/definitions/RemoteApplicationInfoResults'}},
-                                              'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ApplicationOffersResults)
-    async def ApplicationOffers(self, offer_urls):
-        '''
-        offer_urls : typing.Sequence[str]
-        Returns -> typing.Sequence[~ApplicationOfferResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='ApplicationOffers',
-                   version=2,
-                   params=_params)
-        _params['offer-urls'] = offer_urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyOffers(self, force, offer_urls):
-        '''
-        force : bool
-        offer_urls : typing.Sequence[str]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='DestroyOffers',
-                   version=2,
-                   params=_params)
-        _params['force'] = force
-        _params['offer-urls'] = offer_urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(QueryApplicationOffersResults)
-    async def FindApplicationOffers(self, filters):
-        '''
-        filters : typing.Sequence[~OfferFilter]
-        Returns -> typing.Sequence[~ApplicationOfferAdminDetails]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='FindApplicationOffers',
-                   version=2,
-                   params=_params)
-        _params['Filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ConsumeOfferDetailsResults)
-    async def GetConsumeDetails(self, offer_urls):
-        '''
-        offer_urls : typing.Sequence[str]
-        Returns -> typing.Sequence[~ConsumeOfferDetailsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='GetConsumeDetails',
-                   version=2,
-                   params=_params)
-        _params['offer-urls'] = offer_urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(QueryApplicationOffersResults)
-    async def ListApplicationOffers(self, filters):
-        '''
-        filters : typing.Sequence[~OfferFilter]
-        Returns -> typing.Sequence[~ApplicationOfferAdminDetails]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='ListApplicationOffers',
-                   version=2,
-                   params=_params)
-        _params['Filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ModifyOfferAccess(self, changes):
-        '''
-        changes : typing.Sequence[~ModifyOfferAccess]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='ModifyOfferAccess',
-                   version=2,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Offer(self, offers):
-        '''
-        offers : typing.Sequence[~AddApplicationOffer]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='Offer',
-                   version=2,
-                   params=_params)
-        _params['Offers'] = offers
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RemoteApplicationInfoResults)
-    async def RemoteApplicationInfo(self, offer_urls):
-        '''
-        offer_urls : typing.Sequence[str]
-        Returns -> typing.Sequence[~RemoteApplicationInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ApplicationOffers',
-                   request='RemoteApplicationInfo',
-                   version=2,
-                   params=_params)
-        _params['offer-urls'] = offer_urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class BackupsFacade(Type):
-    name = 'Backups'
-    version = 2
-    schema =     {'definitions': {'BackupsCreateArgs': {'additionalProperties': False,
-                                           'properties': {'keep-copy': {'type': 'boolean'},
-                                                          'no-download': {'type': 'boolean'},
-                                                          'notes': {'type': 'string'}},
-                                           'required': ['notes',
-                                                        'keep-copy',
-                                                        'no-download'],
-                                           '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'},
-                                                              'filename': {'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',
-                                                            'filename'],
-                                               'type': 'object'},
-                     'BackupsRemoveArgs': {'additionalProperties': False,
-                                           'properties': {'ids': {'items': {'type': 'string'},
-                                                                  'type': 'array'}},
-                                           'required': ['ids'],
-                                           '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'},
-                     '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'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               '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=2,
-                   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=2,
-                   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=2,
-                   params=_params)
-        _params['id'] = id_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BackupsListResult)
-    async def List(self):
-        '''
-
-        Returns -> typing.Sequence[~BackupsMetadataResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Backups',
-                   request='List',
-                   version=2,
-                   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=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, id_):
-        '''
-        id_ : str
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Backups',
-                   request='Remove',
-                   version=2,
-                   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=2,
-                   params=_params)
-        _params['backup-id'] = backup_id
-        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[~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 BundleFacade(Type):
-    name = 'Bundle'
-    version = 2
-    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': {'bundleURL': {'type': 'string'},
-                                                            'yaml': {'type': 'string'}},
-                                             'required': ['yaml', 'bundleURL'],
-                                             'type': 'object'},
-                     'BundleChangesResults': {'additionalProperties': False,
-                                              'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'},
-                                                                         'type': 'array'},
-                                                             'errors': {'items': {'type': 'string'},
-                                                                        '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'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'StringResult': {'additionalProperties': False,
-                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                     'result': {'type': 'string'}},
-                                      'required': ['result'],
-                                      'type': 'object'}},
-     'properties': {'ExportBundle': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                     'type': 'object'},
-                    'GetChanges': {'properties': {'Params': {'$ref': '#/definitions/BundleChangesParams'},
-                                                  'Result': {'$ref': '#/definitions/BundleChangesResults'}},
-                                   'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringResult)
-    async def ExportBundle(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Bundle',
-                   request='ExportBundle',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BundleChangesResults)
-    async def GetChanges(self, yaml):
-        '''
-        yaml : str
-        Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Bundle',
-                   request='GetChanges',
-                   version=2,
-                   params=_params)
-        _params['yaml'] = yaml
-        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'},
-                     'CharmDevice': {'additionalProperties': False,
-                                     'properties': {'CountMax': {'type': 'integer'},
-                                                    'CountMin': {'type': 'integer'},
-                                                    'Description': {'type': 'string'},
-                                                    'Name': {'type': 'string'},
-                                                    'Type': {'type': 'string'}},
-                                     'required': ['Name',
-                                                  'Description',
-                                                  'Type',
-                                                  'CountMin',
-                                                  'CountMax'],
-                                     'type': 'object'},
-                     'CharmInfo': {'additionalProperties': False,
-                                   'properties': {'actions': {'$ref': '#/definitions/CharmActions'},
-                                                  'config': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmOption'}},
-                                                             'type': 'object'},
-                                                  'lxd-profile': {'$ref': '#/definitions/CharmLXDProfile'},
-                                                  'meta': {'$ref': '#/definitions/CharmMeta'},
-                                                  'metrics': {'$ref': '#/definitions/CharmMetrics'},
-                                                  'revision': {'type': 'integer'},
-                                                  'url': {'type': 'string'}},
-                                   'required': ['revision', 'url', 'config'],
-                                   'type': 'object'},
-                     'CharmLXDProfile': {'additionalProperties': False,
-                                         'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                   'type': 'object'},
-                                                        'description': {'type': 'string'},
-                                                        'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                                 'type': 'object'}},
-                                                                    'type': 'object'}},
-                                         'required': ['config',
-                                                      'description',
-                                                      'devices'],
-                                         'type': 'object'},
-                     'CharmMeta': {'additionalProperties': False,
-                                   'properties': {'categories': {'items': {'type': 'string'},
-                                                                 'type': 'array'},
-                                                  'description': {'type': 'string'},
-                                                  'devices': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmDevice'}},
-                                                              'type': 'object'},
-                                                  '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[str, ~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[str]
-        Returns -> typing.Sequence[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 ClientFacade(Type):
-    name = 'Client'
-    version = 2
-    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'},
-                                                 'force': {'type': 'boolean'},
-                                                 'url': {'type': 'string'}},
-                                  'required': ['url', 'channel', 'force'],
-                                  'type': 'object'},
-                     'AddCharmWithAuthorization': {'additionalProperties': False,
-                                                   'properties': {'channel': {'type': 'string'},
-                                                                  'force': {'type': 'boolean'},
-                                                                  'macaroon': {'$ref': '#/definitions/Macaroon'},
-                                                                  'url': {'type': 'string'}},
-                                                   'required': ['url',
-                                                                'channel',
-                                                                'macaroon',
-                                                                'force'],
-                                                   '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'},
-                     'ApplicationOfferStatus': {'additionalProperties': False,
-                                                'properties': {'active-connected-count': {'type': 'integer'},
-                                                               'application-name': {'type': 'string'},
-                                                               'charm': {'type': 'string'},
-                                                               'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteEndpoint'}},
-                                                                             'type': 'object'},
-                                                               'err': {'additionalProperties': True,
-                                                                       'type': 'object'},
-                                                               'offer-name': {'type': 'string'},
-                                                               'total-connected-count': {'type': 'integer'}},
-                                                'required': ['offer-name',
-                                                             'application-name',
-                                                             'charm',
-                                                             'endpoints',
-                                                             'active-connected-count',
-                                                             'total-connected-count'],
-                                                'type': 'object'},
-                     'ApplicationStatus': {'additionalProperties': False,
-                                           'properties': {'can-upgrade-to': {'type': 'string'},
-                                                          'charm': {'type': 'string'},
-                                                          'charm-verion': {'type': 'string'},
-                                                          'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                'type': 'object'},
-                                                          'err': {'additionalProperties': True,
-                                                                  'type': 'object'},
-                                                          'exposed': {'type': 'boolean'},
-                                                          'int': {'type': 'integer'},
-                                                          'life': {'type': 'string'},
-                                                          'meter-statuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}},
-                                                                             'type': 'object'},
-                                                          'provider-id': {'type': 'string'},
-                                                          'public-address': {'type': 'string'},
-                                                          'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
-                                                                                                     'type': 'array'}},
-                                                                        'type': 'object'},
-                                                          'series': {'type': 'string'},
-                                                          'status': {'$ref': '#/definitions/DetailedStatus'},
-                                                          'string': {'type': 'string'},
-                                                          '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',
-                                                        'charm-verion',
-                                                        'endpoint-bindings',
-                                                        'public-address'],
-                                           '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': {'bundleURL': {'type': 'string'},
-                                                            'yaml': {'type': 'string'}},
-                                             'required': ['yaml', 'bundleURL'],
-                                             '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': {'agentstream': {'type': 'string'},
-                                                        'arch': {'type': 'string'},
-                                                        'major': {'type': 'integer'},
-                                                        'minor': {'type': 'integer'},
-                                                        'number': {'$ref': '#/definitions/Number'},
-                                                        'series': {'type': 'string'}},
-                                         'required': ['number',
-                                                      'major',
-                                                      'minor',
-                                                      'arch',
-                                                      'series',
-                                                      'agentstream'],
-                                         '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'},
-                                                   'controller-timestamp': {'format': 'date-time',
-                                                                            'type': 'string'},
-                                                   'machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}},
-                                                                'type': 'object'},
-                                                   'model': {'$ref': '#/definitions/ModelStatusInfo'},
-                                                   'offers': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationOfferStatus'}},
-                                                              'type': 'object'},
-                                                   'relations': {'items': {'$ref': '#/definitions/RelationStatus'},
-                                                                 'type': 'array'},
-                                                   'remote-applications': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteApplicationStatus'}},
-                                                                           'type': 'object'}},
-                                    'required': ['model',
-                                                 'machines',
-                                                 'applications',
-                                                 'remote-applications',
-                                                 'offers',
-                                                 'relations',
-                                                 'controller-timestamp'],
-                                    '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'},
-                     'LXDProfile': {'additionalProperties': False,
-                                    'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
-                                                              'type': 'object'},
-                                                   'description': {'type': 'string'},
-                                                   'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                            'type': 'object'}},
-                                                               'type': 'object'}},
-                                    'required': ['config',
-                                                 'description',
-                                                 'devices'],
-                                    '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'},
-                                                      'lxd-profiles': {'patternProperties': {'.*': {'$ref': '#/definitions/LXDProfile'}},
-                                                                       'type': 'object'},
-                                                      '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'},
-                                                  'type': {'type': 'string'},
-                                                  'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
-                                                            'type': 'array'},
-                                                  'uuid': {'type': 'string'}},
-                                   'required': ['name',
-                                                'type',
-                                                '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'},
-                                                         'message': {'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'},
-                                                        'type': {'type': 'string'},
-                                                        'version': {'type': 'string'}},
-                                         'required': ['name',
-                                                      'type',
-                                                      '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'},
-                                                       'status': {'$ref': '#/definitions/DetailedStatus'}},
-                                        'required': ['id',
-                                                     'key',
-                                                     'interface',
-                                                     'scope',
-                                                     'endpoints',
-                                                     'status'],
-                                        'type': 'object'},
-                     'RemoteApplicationStatus': {'additionalProperties': False,
-                                                 'properties': {'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'},
-                                                                              'type': 'array'},
-                                                                'err': {'additionalProperties': True,
-                                                                        'type': 'object'},
-                                                                'life': {'type': 'string'},
-                                                                'offer-name': {'type': 'string'},
-                                                                'offer-url': {'type': 'string'},
-                                                                'relations': {'patternProperties': {'.*': {'items': {'type': 'string'},
-                                                                                                           'type': 'array'}},
-                                                                              'type': 'object'},
-                                                                'status': {'$ref': '#/definitions/DetailedStatus'}},
-                                                 'required': ['offer-url',
-                                                              'offer-name',
-                                                              'endpoints',
-                                                              'life',
-                                                              'relations',
-                                                              'status'],
-                                                 'type': 'object'},
-                     'RemoteEndpoint': {'additionalProperties': False,
-                                        'properties': {'interface': {'type': 'string'},
-                                                       'limit': {'type': 'integer'},
-                                                       'name': {'type': 'string'},
-                                                       'role': {'type': 'string'}},
-                                        'required': ['name',
-                                                     'role',
-                                                     'interface',
-                                                     'limit'],
-                                        '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': {'force': {'type': 'boolean'},
-                                                             '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': {'address': {'type': 'string'},
-                                                   'agent-status': {'$ref': '#/definitions/DetailedStatus'},
-                                                   'charm': {'type': 'string'},
-                                                   'leader': {'type': 'boolean'},
-                                                   'machine': {'type': 'string'},
-                                                   'opened-ports': {'items': {'type': 'string'},
-                                                                    'type': 'array'},
-                                                   'provider-id': {'type': 'string'},
-                                                   '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               '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[~HostPort]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='APIHostPorts',
-                   version=2,
-                   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=2,
-                   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=2,
-                   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=2,
-                   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[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='AddMachines',
-                   version=2,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddMachinesResults)
-    async def AddMachinesV2(self, params):
-        '''
-        params : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='AddMachinesV2',
-                   version=2,
-                   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=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='CACert',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyMachines(self, force, machine_names):
-        '''
-        force : bool
-        machine_names : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='DestroyMachines',
-                   version=2,
-                   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[~Tools]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='FindTools',
-                   version=2,
-                   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[str]
-        Returns -> typing.Union[typing.Mapping[str, ~ApplicationStatus], str, typing.Mapping[str, ~MachineStatus], _ForwardRef('ModelStatusInfo'), typing.Mapping[str, ~ApplicationOfferStatus], typing.Sequence[~RelationStatus], typing.Mapping[str, ~RemoteApplicationStatus]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='FullStatus',
-                   version=2,
-                   params=_params)
-        _params['patterns'] = patterns
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BundleChangesResults)
-    async def GetBundleChanges(self, yaml):
-        '''
-        yaml : str
-        Returns -> typing.Union[typing.Sequence[~BundleChange], typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='GetBundleChanges',
-                   version=2,
-                   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=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddMachinesResults)
-    async def InjectMachines(self, params):
-        '''
-        params : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='InjectMachines',
-                   version=2,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResults)
-    async def ModelGet(self):
-        '''
-
-        Returns -> typing.Mapping[str, ~ConfigValue]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ModelGet',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelInfo)
-    async def ModelInfo(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ModelInfo',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelSet(self, config):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ModelSet',
-                   version=2,
-                   params=_params)
-        _params['config'] = config
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelUnset(self, keys):
-        '''
-        keys : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ModelUnset',
-                   version=2,
-                   params=_params)
-        _params['keys'] = keys
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelUserInfoResults)
-    async def ModelUserInfo(self):
-        '''
-
-        Returns -> typing.Sequence[~ModelUserInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ModelUserInfo',
-                   version=2,
-                   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=2,
-                   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=2,
-                   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=2,
-                   params=_params)
-        _params['target'] = target
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ResolveCharmResults)
-    async def ResolveCharms(self, references):
-        '''
-        references : typing.Sequence[str]
-        Returns -> typing.Sequence[~ResolveCharmResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='ResolveCharms',
-                   version=2,
-                   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=2,
-                   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[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='RetryProvisioning',
-                   version=2,
-                   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=2,
-                   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=2,
-                   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=2,
-                   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[int]
-        level : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='SetSLALevel',
-                   version=2,
-                   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[~StatusHistoryRequest]
-        Returns -> typing.Sequence[~StatusHistoryResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Client',
-                   request='StatusHistory',
-                   version=2,
-                   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=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class CredentialValidatorFacade(Type):
-    name = 'CredentialValidator'
-    version = 2
-    schema =     {'definitions': {'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'},
-                     'InvalidateCredentialArg': {'additionalProperties': False,
-                                                 'properties': {'reason': {'type': 'string'}},
-                                                 'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'ModelCredential': {'additionalProperties': False,
-                                         'properties': {'credential-tag': {'type': 'string'},
-                                                        'exists': {'type': 'boolean'},
-                                                        'model-tag': {'type': 'string'},
-                                                        'valid': {'type': 'boolean'}},
-                                         'required': ['model-tag',
-                                                      'credential-tag'],
-                                         'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'NotifyWatcherId': {'type': 'string'},
-                                                          'error': {'$ref': '#/definitions/Error'}},
-                                           'required': ['NotifyWatcherId'],
-                                           'type': 'object'}},
-     'properties': {'InvalidateModelCredential': {'properties': {'Params': {'$ref': '#/definitions/InvalidateCredentialArg'},
-                                                                 'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                                  'type': 'object'},
-                    'ModelCredential': {'properties': {'Result': {'$ref': '#/definitions/ModelCredential'}},
-                                        'type': 'object'},
-                    'WatchCredential': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
-                                                       'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                        'type': 'object'},
-                    'WatchModelCredential': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                             'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ErrorResult)
-    async def InvalidateModelCredential(self, reason):
-        '''
-        reason : str
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CredentialValidator',
-                   request='InvalidateModelCredential',
-                   version=2,
-                   params=_params)
-        _params['reason'] = reason
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelCredential)
-    async def ModelCredential(self):
-        '''
-
-        Returns -> typing.Union[str, bool]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CredentialValidator',
-                   request='ModelCredential',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchCredential(self, tag):
-        '''
-        tag : str
-        Returns -> typing.Union[str, _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CredentialValidator',
-                   request='WatchCredential',
-                   version=2,
-                   params=_params)
-        _params['tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchModelCredential(self):
-        '''
-
-        Returns -> typing.Union[str, _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='CredentialValidator',
-                   request='WatchModelCredential',
-                   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[~AddSubnetParams]
-        Returns -> typing.Sequence[~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[~CreateSpaceParams]
-        Returns -> typing.Sequence[~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[~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[~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[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[~MachineBlockDevices]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[~MachineStorageId], _ForwardRef('Error'), str]
-        '''
-        # 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'},
-                                               'Id': {'type': 'integer'},
-                                               'Priority': {'type': 'number'},
-                                               'Tags': {'patternProperties': {'.*': {'type': 'string'}},
-                                                        'type': 'object'},
-                                               'Votes': {'type': 'integer'}},
-                                'required': ['Id',
-                                             'Address',
-                                             'Priority',
-                                             'Tags',
-                                             '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               '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[~ControllersSpec]
-        Returns -> typing.Sequence[~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[~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[typing.Sequence[~HAMember], _ForwardRef('HAMember'), typing.Sequence[~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[~ImageSpec]
-        Returns -> typing.Sequence[~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[~ImageSpec]
-        Returns -> typing.Sequence[~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[str]
-        Returns -> typing.Sequence[~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[str]
-        region : str
-        root_storage_type : str
-        series : typing.Sequence[str]
-        stream : str
-        virt_type : str
-        Returns -> typing.Sequence[~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[~CloudImageMetadataList]
-        Returns -> typing.Sequence[~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[~ClaimLeadershipParams]
-        Returns -> typing.Sequence[~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[~AddMachineParams]
-        Returns -> typing.Sequence[~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[~ModelInstanceTypesConstraint]
-        Returns -> typing.Sequence[~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'},
-                                               'labels': {'patternProperties': {'.*': {'type': 'string'}},
-                                                          'type': 'object'},
-                                               '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[~MetricBatchParam]
-        Returns -> typing.Sequence[~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'],
-                                          'type': 'object'},
-                     'MeterStatusParams': {'additionalProperties': False,
-                                           'properties': {'statues': {'items': {'$ref': '#/definitions/MeterStatusParam'},
-                                                                      'type': 'array'}},
-                                           'required': ['statues'],
-                                           'type': 'object'},
-                     'MetricResult': {'additionalProperties': False,
-                                      'properties': {'key': {'type': 'string'},
-                                                     'labels': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                'type': 'object'},
-                                                     'time': {'format': 'date-time',
-                                                              'type': 'string'},
-                                                     'unit': {'type': 'string'},
-                                                     'value': {'type': 'string'}},
-                                      'required': ['time',
-                                                   'key',
-                                                   'value',
-                                                   'unit',
-                                                   'labels'],
-                                      '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[~Entity]
-        Returns -> typing.Sequence[~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[~MeterStatusParam]
-        Returns -> typing.Sequence[~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 ModelConfigFacade(Type):
-    name = 'ModelConfig'
-    version = 2
-    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'},
-                     'ModelSequencesResult': {'additionalProperties': False,
-                                              'properties': {'sequences': {'patternProperties': {'.*': {'type': 'integer'}},
-                                                                           'type': 'object'}},
-                                              'required': ['sequences'],
-                                              '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'},
-                    'Sequences': {'properties': {'Result': {'$ref': '#/definitions/ModelSequencesResult'}},
-                                  'type': 'object'},
-                    'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}},
-                                    'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(ModelConfigResults)
-    async def ModelGet(self):
-        '''
-
-        Returns -> typing.Mapping[str, ~ConfigValue]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelConfig',
-                   request='ModelGet',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelSet(self, config):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelConfig',
-                   request='ModelSet',
-                   version=2,
-                   params=_params)
-        _params['config'] = config
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ModelUnset(self, keys):
-        '''
-        keys : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelConfig',
-                   request='ModelUnset',
-                   version=2,
-                   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=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelSequencesResult)
-    async def Sequences(self):
-        '''
-
-        Returns -> typing.Mapping[str, int]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelConfig',
-                   request='Sequences',
-                   version=2,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetSLALevel(self, creds, level):
-        '''
-        creds : typing.Sequence[int]
-        level : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelConfig',
-                   request='SetSLALevel',
-                   version=2,
-                   params=_params)
-        _params['creds'] = creds
-        _params['level'] = level
-        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[str, typing.Any]
-        credential : str
-        name : str
-        owner_tag : str
-        region : str
-        Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[str, ~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~ModifyModelAccess]
-        Returns -> typing.Sequence[~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[~ModelDefaultValues]
-        Returns -> typing.Sequence[~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[~ModelUnsetKeys]
-        Returns -> typing.Sequence[~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 ProxyUpdaterFacade(Type):
-    name = 'ProxyUpdater'
-    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'},
-                     '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'},
-                                                          'juju-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
-                                                          'legacy-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
-                                                          'snap-proxy-settings': {'$ref': '#/definitions/ProxyConfig'},
-                                                          'snap-store-assertions': {'type': 'string'},
-                                                          'snap-store-id': {'type': 'string'}},
-                                           'required': ['legacy-proxy-settings',
-                                                        'juju-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[~Entity]
-        Returns -> typing.Sequence[~ProxyConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ProxyUpdater',
-                   request='ProxyConfig',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchForProxyConfigAndAPIHostPortChanges(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ProxyUpdater',
-                   request='WatchForProxyConfigAndAPIHostPortChanges',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 SingularFacade(Type):
-    name = 'Singular'
-    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'},
-                     'SingularClaim': {'additionalProperties': False,
-                                       'properties': {'claimant-tag': {'type': 'string'},
-                                                      'duration': {'type': 'integer'},
-                                                      'entity-tag': {'type': 'string'}},
-                                       'required': ['entity-tag',
-                                                    'claimant-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[~SingularClaim]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Singular',
-                   request='Claim',
-                   version=2,
-                   params=_params)
-        _params['claims'] = claims
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Wait(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Singular',
-                   request='Wait',
-                   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[~CreateSpaceParams]
-        Returns -> typing.Sequence[~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[~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[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[~AddSubnetParams]
-        Returns -> typing.Sequence[~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[~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[~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[~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 UserManagerFacade(Type):
-    name = 'UserManager'
-    version = 2
-    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'},
-                    'ResetPassword': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                     'Result': {'$ref': '#/definitions/AddUserResults'}},
-                                      '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[~AddUser]
-        Returns -> typing.Sequence[~AddUserResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='AddUser',
-                   version=2,
-                   params=_params)
-        _params['users'] = users
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DisableUser(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='DisableUser',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnableUser(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='EnableUser',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveUser(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='RemoveUser',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(AddUserResults)
-    async def ResetPassword(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~AddUserResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='ResetPassword',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPassword(self, changes):
-        '''
-        changes : typing.Sequence[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='SetPassword',
-                   version=2,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UserInfoResults)
-    async def UserInfo(self, entities, include_disabled):
-        '''
-        entities : typing.Sequence[~Entity]
-        include_disabled : bool
-        Returns -> typing.Sequence[~UserInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='UserManager',
-                   request='UserInfo',
-                   version=2,
-                   params=_params)
-        _params['entities'] = entities
-        _params['include-disabled'] = include_disabled
-        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[~MachineStorageId], _ForwardRef('Error'), str]
-        '''
-        # 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 --git a/modules/libjuju/juju/client/_client3.py b/modules/libjuju/juju/client/_client3.py
deleted file mode 100644
index 67840db..0000000
--- a/modules/libjuju/juju/client/_client3.py
+++ /dev/null
@@ -1,6749 +0,0 @@
-# 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.facade import ReturnMapping, Type
-
-
-class ActionFacade(Type):
-    name = 'Action'
-    version = 3
-    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[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='Actions',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationsCharmActionsResults)
-    async def ApplicationsCharmsActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ApplicationCharmActionsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='ApplicationsCharmsActions',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Cancel(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='Cancel',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Enqueue(self, actions):
-        '''
-        actions : typing.Sequence[~Action]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='Enqueue',
-                   version=3,
-                   params=_params)
-        _params['actions'] = actions
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FindTagsResults)
-    async def FindActionTagsByPrefix(self, prefixes):
-        '''
-        prefixes : typing.Sequence[str]
-        Returns -> typing.Sequence[~Entity]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='FindActionTagsByPrefix',
-                   version=3,
-                   params=_params)
-        _params['prefixes'] = prefixes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByNames)
-    async def FindActionsByNames(self, names):
-        '''
-        names : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionsByName]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='FindActionsByNames',
-                   version=3,
-                   params=_params)
-        _params['names'] = names
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListAll(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='ListAll',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListCompleted(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='ListCompleted',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListPending(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='ListPending',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionsByReceivers)
-    async def ListRunning(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionsByReceiver]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='ListRunning',
-                   version=3,
-                   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[str]
-        commands : str
-        machines : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='Run',
-                   version=3,
-                   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[str]
-        commands : str
-        machines : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[str]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Action',
-                   request='RunOnAllMachines',
-                   version=3,
-                   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 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[str]
-        Returns -> typing.Mapping[str, ~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[~Placement]
-        Returns -> typing.Sequence[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[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[~ApplicationDeploy]
-        Returns -> typing.Sequence[~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[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[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[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[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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~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[~ApplicationMetricCredential]
-        Returns -> typing.Sequence[~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[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[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 CloudFacade(Type):
-    name = 'Cloud'
-    version = 3
-    schema =     {'definitions': {'AddCloudArgs': {'additionalProperties': False,
-                                      'properties': {'cloud': {'$ref': '#/definitions/Cloud'},
-                                                     'name': {'type': 'string'}},
-                                      'required': ['cloud', 'name'],
-                                      'type': 'object'},
-                     'Cloud': {'additionalProperties': False,
-                               'properties': {'auth-types': {'items': {'type': 'string'},
-                                                             'type': 'array'},
-                                              'ca-certificates': {'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'},
-                     'CloudCredentialArg': {'additionalProperties': False,
-                                            'properties': {'cloud-name': {'type': 'string'},
-                                                           'credential-name': {'type': 'string'}},
-                                            'required': ['cloud-name',
-                                                         'credential-name'],
-                                            'type': 'object'},
-                     'CloudCredentialArgs': {'additionalProperties': False,
-                                             'properties': {'credentials': {'items': {'$ref': '#/definitions/CloudCredentialArg'},
-                                                                            'type': 'array'},
-                                                            'include-secrets': {'type': 'boolean'}},
-                                             'required': ['include-secrets'],
-                                             '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'},
-                     'CloudDetails': {'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'},
-                     'CloudInfo': {'additionalProperties': False,
-                                   'properties': {'CloudDetails': {'$ref': '#/definitions/CloudDetails'},
-                                                  'users': {'items': {'$ref': '#/definitions/CloudUserInfo'},
-                                                            'type': 'array'}},
-                                   'required': ['CloudDetails', 'users'],
-                                   'type': 'object'},
-                     'CloudInfoResult': {'additionalProperties': False,
-                                         'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                        'result': {'$ref': '#/definitions/CloudInfo'}},
-                                         'type': 'object'},
-                     'CloudInfoResults': {'additionalProperties': False,
-                                          'properties': {'results': {'items': {'$ref': '#/definitions/CloudInfoResult'},
-                                                                     'type': 'array'}},
-                                          'required': ['results'],
-                                          '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'},
-                     'CloudUserInfo': {'additionalProperties': False,
-                                       'properties': {'access': {'type': 'string'},
-                                                      'display-name': {'type': 'string'},
-                                                      'user': {'type': 'string'}},
-                                       'required': ['user',
-                                                    'display-name',
-                                                    'access'],
-                                       'type': 'object'},
-                     'CloudsResult': {'additionalProperties': False,
-                                      'properties': {'clouds': {'patternProperties': {'.*': {'$ref': '#/definitions/Cloud'}},
-                                                                'type': 'object'}},
-                                      'type': 'object'},
-                     'ControllerCredentialInfo': {'additionalProperties': False,
-                                                  'properties': {'content': {'$ref': '#/definitions/CredentialContent'},
-                                                                 'models': {'items': {'$ref': '#/definitions/ModelAccess'},
-                                                                            'type': 'array'}},
-                                                  'type': 'object'},
-                     'CredentialContent': {'additionalProperties': False,
-                                           'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                    'type': 'object'},
-                                                          'auth-type': {'type': 'string'},
-                                                          'cloud': {'type': 'string'},
-                                                          'name': {'type': 'string'}},
-                                           'required': ['name',
-                                                        'cloud',
-                                                        'auth-type'],
-                                           'type': 'object'},
-                     'CredentialContentResult': {'additionalProperties': False,
-                                                 'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                'result': {'$ref': '#/definitions/ControllerCredentialInfo'}},
-                                                 'type': 'object'},
-                     'CredentialContentResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/CredentialContentResult'},
-                                                                             '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'},
-                     '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'},
-                     'ListCloudInfo': {'additionalProperties': False,
-                                       'properties': {'CloudDetails': {'$ref': '#/definitions/CloudDetails'},
-                                                      'user-access': {'type': 'string'}},
-                                       'required': ['CloudDetails', 'user-access'],
-                                       'type': 'object'},
-                     'ListCloudInfoResult': {'additionalProperties': False,
-                                             'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                            'result': {'$ref': '#/definitions/ListCloudInfo'}},
-                                             'type': 'object'},
-                     'ListCloudInfoResults': {'additionalProperties': False,
-                                              'properties': {'results': {'items': {'$ref': '#/definitions/ListCloudInfoResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['results'],
-                                              'type': 'object'},
-                     'ListCloudsRequest': {'additionalProperties': False,
-                                           'properties': {'all': {'type': 'boolean'},
-                                                          'user-tag': {'type': 'string'}},
-                                           'required': ['user-tag'],
-                                           'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'ModelAccess': {'additionalProperties': False,
-                                     'properties': {'access': {'type': 'string'},
-                                                    'model': {'type': 'string'}},
-                                     'type': 'object'},
-                     'ModifyCloudAccess': {'additionalProperties': False,
-                                           'properties': {'access': {'type': 'string'},
-                                                          'action': {'type': 'string'},
-                                                          'cloud-tag': {'type': 'string'},
-                                                          'user-tag': {'type': 'string'}},
-                                           'required': ['user-tag',
-                                                        'cloud-tag',
-                                                        'action',
-                                                        'access'],
-                                           'type': 'object'},
-                     'ModifyCloudAccessRequest': {'additionalProperties': False,
-                                                  'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyCloudAccess'},
-                                                                             'type': 'array'}},
-                                                  'required': ['changes'],
-                                                  'type': 'object'},
-                     'RevokeCredentialArg': {'additionalProperties': False,
-                                             'properties': {'force': {'type': 'boolean'},
-                                                            'tag': {'type': 'string'}},
-                                             'required': ['tag', 'force'],
-                                             'type': 'object'},
-                     'RevokeCredentialArgs': {'additionalProperties': False,
-                                              'properties': {'credentials': {'items': {'$ref': '#/definitions/RevokeCredentialArg'},
-                                                                             'type': 'array'}},
-                                              'required': ['credentials'],
-                                              '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'},
-                     'TaggedCredential': {'additionalProperties': False,
-                                          'properties': {'credential': {'$ref': '#/definitions/CloudCredential'},
-                                                         'tag': {'type': 'string'}},
-                                          'required': ['tag', 'credential'],
-                                          'type': 'object'},
-                     'TaggedCredentials': {'additionalProperties': False,
-                                           'properties': {'credentials': {'items': {'$ref': '#/definitions/TaggedCredential'},
-                                                                          'type': 'array'}},
-                                           'type': 'object'},
-                     'UpdateCredentialArgs': {'additionalProperties': False,
-                                              'properties': {'credentials': {'items': {'$ref': '#/definitions/TaggedCredential'},
-                                                                             'type': 'array'},
-                                                             'force': {'type': 'boolean'}},
-                                              'required': ['credentials', 'force'],
-                                              'type': 'object'},
-                     'UpdateCredentialModelResult': {'additionalProperties': False,
-                                                     'properties': {'errors': {'items': {'$ref': '#/definitions/ErrorResult'},
-                                                                               'type': 'array'},
-                                                                    'name': {'type': 'string'},
-                                                                    'uuid': {'type': 'string'}},
-                                                     'required': ['uuid', 'name'],
-                                                     'type': 'object'},
-                     'UpdateCredentialResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'models': {'items': {'$ref': '#/definitions/UpdateCredentialModelResult'},
-                                                                          'type': 'array'},
-                                                               'tag': {'type': 'string'}},
-                                                'required': ['tag'],
-                                                'type': 'object'},
-                     'UpdateCredentialResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/UpdateCredentialResult'},
-                                                                            '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               'type': 'object'}},
-     'properties': {'AddCloud': {'properties': {'Params': {'$ref': '#/definitions/AddCloudArgs'}},
-                                 'type': 'object'},
-                    'AddCredentials': {'properties': {'Params': {'$ref': '#/definitions/TaggedCredentials'},
-                                                      'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                       'type': 'object'},
-                    'CheckCredentialsModels': {'properties': {'Params': {'$ref': '#/definitions/TaggedCredentials'},
-                                                              'Result': {'$ref': '#/definitions/UpdateCredentialResults'}},
-                                               'type': 'object'},
-                    'Cloud': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/CloudResults'}},
-                              'type': 'object'},
-                    'CloudInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/CloudInfoResults'}},
-                                  'type': 'object'},
-                    'Clouds': {'properties': {'Result': {'$ref': '#/definitions/CloudsResult'}},
-                               'type': 'object'},
-                    'Credential': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/CloudCredentialResults'}},
-                                   'type': 'object'},
-                    'CredentialContents': {'properties': {'Params': {'$ref': '#/definitions/CloudCredentialArgs'},
-                                                          'Result': {'$ref': '#/definitions/CredentialContentResults'}},
-                                           'type': 'object'},
-                    'DefaultCloud': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
-                                     'type': 'object'},
-                    'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/CloudInstanceTypesConstraints'},
-                                                     'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
-                                      'type': 'object'},
-                    'ListCloudInfo': {'properties': {'Params': {'$ref': '#/definitions/ListCloudsRequest'},
-                                                     'Result': {'$ref': '#/definitions/ListCloudInfoResults'}},
-                                      'type': 'object'},
-                    'ModifyCloudAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyCloudAccessRequest'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'RemoveClouds': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                     'type': 'object'},
-                    'RevokeCredentialsCheckModels': {'properties': {'Params': {'$ref': '#/definitions/RevokeCredentialArgs'},
-                                                                    'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                     'type': 'object'},
-                    'UpdateCredentialsCheckModels': {'properties': {'Params': {'$ref': '#/definitions/UpdateCredentialArgs'},
-                                                                    'Result': {'$ref': '#/definitions/UpdateCredentialResults'}},
-                                                     'type': 'object'},
-                    'UserCredentials': {'properties': {'Params': {'$ref': '#/definitions/UserClouds'},
-                                                       'Result': {'$ref': '#/definitions/StringsResults'}},
-                                        'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def AddCloud(self, cloud, name):
-        '''
-        cloud : Cloud
-        name : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='AddCloud',
-                   version=3,
-                   params=_params)
-        _params['cloud'] = cloud
-        _params['name'] = name
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def AddCredentials(self, credentials):
-        '''
-        credentials : typing.Sequence[~TaggedCredential]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='AddCredentials',
-                   version=3,
-                   params=_params)
-        _params['credentials'] = credentials
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpdateCredentialResults)
-    async def CheckCredentialsModels(self, credentials):
-        '''
-        credentials : typing.Sequence[~TaggedCredential]
-        Returns -> typing.Sequence[~UpdateCredentialResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='CheckCredentialsModels',
-                   version=3,
-                   params=_params)
-        _params['credentials'] = credentials
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudResults)
-    async def Cloud(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='Cloud',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudInfoResults)
-    async def CloudInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='CloudInfo',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudsResult)
-    async def Clouds(self):
-        '''
-
-        Returns -> typing.Mapping[str, ~Cloud]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='Clouds',
-                   version=3,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudCredentialResults)
-    async def Credential(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudCredentialResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='Credential',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CredentialContentResults)
-    async def CredentialContents(self, credentials, include_secrets):
-        '''
-        credentials : typing.Sequence[~CloudCredentialArg]
-        include_secrets : bool
-        Returns -> typing.Sequence[~CredentialContentResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='CredentialContents',
-                   version=3,
-                   params=_params)
-        _params['credentials'] = credentials
-        _params['include-secrets'] = include_secrets
-        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=3,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(InstanceTypesResults)
-    async def InstanceTypes(self, constraints):
-        '''
-        constraints : typing.Sequence[~CloudInstanceTypesConstraint]
-        Returns -> typing.Sequence[~InstanceTypesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='InstanceTypes',
-                   version=3,
-                   params=_params)
-        _params['constraints'] = constraints
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListCloudInfoResults)
-    async def ListCloudInfo(self, all_, user_tag):
-        '''
-        all_ : bool
-        user_tag : str
-        Returns -> typing.Sequence[~ListCloudInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='ListCloudInfo',
-                   version=3,
-                   params=_params)
-        _params['all'] = all_
-        _params['user-tag'] = user_tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ModifyCloudAccess(self, changes):
-        '''
-        changes : typing.Sequence[~ModifyCloudAccess]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='ModifyCloudAccess',
-                   version=3,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveClouds(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='RemoveClouds',
-                   version=3,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RevokeCredentialsCheckModels(self, credentials):
-        '''
-        credentials : typing.Sequence[~RevokeCredentialArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='RevokeCredentialsCheckModels',
-                   version=3,
-                   params=_params)
-        _params['credentials'] = credentials
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpdateCredentialResults)
-    async def UpdateCredentialsCheckModels(self, credentials, force):
-        '''
-        credentials : typing.Sequence[~TaggedCredential]
-        force : bool
-        Returns -> typing.Sequence[~UpdateCredentialResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='UpdateCredentialsCheckModels',
-                   version=3,
-                   params=_params)
-        _params['credentials'] = credentials
-        _params['force'] = force
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def UserCredentials(self, user_clouds):
-        '''
-        user_clouds : typing.Sequence[~UserCloud]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Cloud',
-                   request='UserCredentials',
-                   version=3,
-                   params=_params)
-        _params['user-clouds'] = user_clouds
-        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[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~MigrationSpec]
-        Returns -> typing.Sequence[~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[~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[str, ~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[~Entity]
-        Returns -> typing.Sequence[~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[~ModifyControllerAccess]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MachinePorts]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 ImageMetadataFacade(Type):
-    name = 'ImageMetadata'
-    version = 3
-    schema =     {'properties': {'UpdateFromPublishedImages': {'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(None)
-    async def UpdateFromPublishedImages(self):
-        '''
-
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ImageMetadata',
-                   request='UpdateFromPublishedImages',
-                   version=3,
-                   params=_params)
-
-        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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~MachineAddresses]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[~AddMachineParams]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~ModelInstanceTypesConstraint]
-        Returns -> typing.Sequence[~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[str, typing.Any]
-        credential : str
-        name : str
-        owner_tag : str
-        region : str
-        Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        simplified : bool
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[str, ~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~ModifyModelAccess]
-        Returns -> typing.Sequence[~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[~ModelDefaultValues]
-        Returns -> typing.Sequence[~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[~ModelUnsetKeys]
-        Returns -> typing.Sequence[~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[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[~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[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[~Entity]
-        Returns -> typing.Sequence[~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'), 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[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[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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~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[~InstanceInfo]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~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[~EntityPassword]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~MachineContainers]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~WatchContainer]
-        Returns -> typing.Sequence[~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[~WatchContainer]
-        Returns -> typing.Sequence[~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[str], _ForwardRef('Error'), str]
-        '''
-        # 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[~CreateSpaceParams]
-        Returns -> typing.Sequence[~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[~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[~StorageAddParams]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~FilesystemFilter]
-        Returns -> typing.Sequence[~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[~StoragePoolFilter]
-        Returns -> typing.Sequence[~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[~StorageFilter]
-        Returns -> typing.Sequence[~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[~VolumeFilter]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~FilesystemAttachment]
-        Returns -> typing.Sequence[~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[~Filesystem]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~VolumeAttachment]
-        Returns -> typing.Sequence[~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[~Volume]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~MachineStorageId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 --git a/modules/libjuju/juju/client/_client4.py b/modules/libjuju/juju/client/_client4.py
deleted file mode 100644
index 2336d2c..0000000
--- a/modules/libjuju/juju/client/_client4.py
+++ /dev/null
@@ -1,4626 +0,0 @@
-# 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.facade import ReturnMapping, Type
-
-
-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[str]
-        Returns -> typing.Mapping[str, ~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[~Placement]
-        Returns -> typing.Sequence[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[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[~ConsumeApplicationArg]
-        Returns -> typing.Sequence[~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[~ApplicationDeploy]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[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[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[str]
-        Returns -> typing.Sequence[~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[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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~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[~ApplicationMetricCredential]
-        Returns -> typing.Sequence[~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[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[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 StorageFacade(Type):
-    name = 'Storage'
-    version = 4
-    schema =     {'definitions': {'AddStorageDetails': {'additionalProperties': False,
-                                           'properties': {'storage-tags': {'items': {'type': 'string'},
-                                                                           'type': 'array'}},
-                                           'required': ['storage-tags'],
-                                           'type': 'object'},
-                     'AddStorageResult': {'additionalProperties': False,
-                                          'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                         'result': {'$ref': '#/definitions/AddStorageDetails'}},
-                                          'type': 'object'},
-                     'AddStorageResults': {'additionalProperties': False,
-                                           'properties': {'results': {'items': {'$ref': '#/definitions/AddStorageResult'},
-                                                                      'type': 'array'}},
-                                           'required': ['results'],
-                                           'type': 'object'},
-                     'BulkImportStorageParams': {'additionalProperties': False,
-                                                 'properties': {'storage': {'items': {'$ref': '#/definitions/ImportStorageParams'},
-                                                                            'type': 'array'}},
-                                                 'required': ['storage'],
-                                                 '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'},
-                     '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'},
-                                                          'unit-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/FilesystemAttachmentDetails'}},
-                                                                               'type': 'object'},
-                                                          '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'},
-                     'ImportStorageDetails': {'additionalProperties': False,
-                                              'properties': {'storage-tag': {'type': 'string'}},
-                                              'required': ['storage-tag'],
-                                              'type': 'object'},
-                     'ImportStorageParams': {'additionalProperties': False,
-                                             'properties': {'kind': {'type': 'integer'},
-                                                            'pool': {'type': 'string'},
-                                                            'provider-id': {'type': 'string'},
-                                                            'storage-name': {'type': 'string'}},
-                                             'required': ['kind',
-                                                          'pool',
-                                                          'provider-id',
-                                                          'storage-name'],
-                                             'type': 'object'},
-                     'ImportStorageResult': {'additionalProperties': False,
-                                             'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                            'result': {'$ref': '#/definitions/ImportStorageDetails'}},
-                                             'type': 'object'},
-                     'ImportStorageResults': {'additionalProperties': False,
-                                              'properties': {'results': {'items': {'$ref': '#/definitions/ImportStorageResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['results'],
-                                              'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'RemoveStorage': {'additionalProperties': False,
-                                       'properties': {'storage': {'items': {'$ref': '#/definitions/RemoveStorageInstance'},
-                                                                  'type': 'array'}},
-                                       'required': ['storage'],
-                                       'type': 'object'},
-                     'RemoveStorageInstance': {'additionalProperties': False,
-                                               'properties': {'destroy-attachments': {'type': 'boolean'},
-                                                              'destroy-storage': {'type': 'boolean'},
-                                                              'tag': {'type': 'string'}},
-                                               'required': ['tag'],
-                                               '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'},
-                                                             'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
-                                                             'read-only': {'type': 'boolean'}},
-                                              'type': 'object'},
-                     'VolumeAttachmentPlanInfo': {'additionalProperties': False,
-                                                  'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                       'type': 'object'},
-                                                                 'device-type': {'type': 'string'}},
-                                                  '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'},
-                                                      'unit-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentDetails'}},
-                                                                           'type': 'object'},
-                                                      '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/AddStorageResults'}},
-                                  'type': 'object'},
-                    'Attach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'CreatePool': {'properties': {'Params': {'$ref': '#/definitions/StoragePool'}},
-                                   'type': 'object'},
-                    'Detach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'Import': {'properties': {'Params': {'$ref': '#/definitions/BulkImportStorageParams'},
-                                              'Result': {'$ref': '#/definitions/ImportStorageResults'}},
-                               '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'},
-                    'Remove': {'properties': {'Params': {'$ref': '#/definitions/RemoveStorage'},
-                                              'Result': {'$ref': '#/definitions/ErrorResults'}},
-                               'type': 'object'},
-                    'StorageDetails': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/StorageDetailsResults'}},
-                                       'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddStorageResults)
-    async def AddToUnit(self, storages):
-        '''
-        storages : typing.Sequence[~StorageAddParams]
-        Returns -> typing.Sequence[~AddStorageResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='AddToUnit',
-                   version=4,
-                   params=_params)
-        _params['storages'] = storages
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Attach(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='Attach',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def CreatePool(self, attrs, name, provider):
-        '''
-        attrs : typing.Mapping[str, typing.Any]
-        name : str
-        provider : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='CreatePool',
-                   version=4,
-                   params=_params)
-        _params['attrs'] = attrs
-        _params['name'] = name
-        _params['provider'] = provider
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Detach(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='Detach',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ImportStorageResults)
-    async def Import(self, storage):
-        '''
-        storage : typing.Sequence[~ImportStorageParams]
-        Returns -> typing.Sequence[~ImportStorageResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='Import',
-                   version=4,
-                   params=_params)
-        _params['storage'] = storage
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemDetailsListResults)
-    async def ListFilesystems(self, filters):
-        '''
-        filters : typing.Sequence[~FilesystemFilter]
-        Returns -> typing.Sequence[~FilesystemDetailsListResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='ListFilesystems',
-                   version=4,
-                   params=_params)
-        _params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StoragePoolsResults)
-    async def ListPools(self, filters):
-        '''
-        filters : typing.Sequence[~StoragePoolFilter]
-        Returns -> typing.Sequence[~StoragePoolsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='ListPools',
-                   version=4,
-                   params=_params)
-        _params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageDetailsListResults)
-    async def ListStorageDetails(self, filters):
-        '''
-        filters : typing.Sequence[~StorageFilter]
-        Returns -> typing.Sequence[~StorageDetailsListResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='ListStorageDetails',
-                   version=4,
-                   params=_params)
-        _params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeDetailsListResults)
-    async def ListVolumes(self, filters):
-        '''
-        filters : typing.Sequence[~VolumeFilter]
-        Returns -> typing.Sequence[~VolumeDetailsListResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='ListVolumes',
-                   version=4,
-                   params=_params)
-        _params['filters'] = filters
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, storage):
-        '''
-        storage : typing.Sequence[~RemoveStorageInstance]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='Remove',
-                   version=4,
-                   params=_params)
-        _params['storage'] = storage
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageDetailsResults)
-    async def StorageDetails(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StorageDetailsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Storage',
-                   request='StorageDetails',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class StorageProvisionerFacade(Type):
-    name = 'StorageProvisioner'
-    version = 4
-    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'},
-                     'RemoveFilesystemParams': {'additionalProperties': False,
-                                                'properties': {'destroy': {'type': 'boolean'},
-                                                               'filesystem-id': {'type': 'string'},
-                                                               'provider': {'type': 'string'}},
-                                                'required': ['provider',
-                                                             'filesystem-id'],
-                                                'type': 'object'},
-                     'RemoveFilesystemParamsResult': {'additionalProperties': False,
-                                                      'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                     'result': {'$ref': '#/definitions/RemoveFilesystemParams'}},
-                                                      'required': ['result'],
-                                                      'type': 'object'},
-                     'RemoveFilesystemParamsResults': {'additionalProperties': False,
-                                                       'properties': {'results': {'items': {'$ref': '#/definitions/RemoveFilesystemParamsResult'},
-                                                                                  'type': 'array'}},
-                                                       'type': 'object'},
-                     'RemoveVolumeParams': {'additionalProperties': False,
-                                            'properties': {'destroy': {'type': 'boolean'},
-                                                           'provider': {'type': 'string'},
-                                                           'volume-id': {'type': 'string'}},
-                                            'required': ['provider', 'volume-id'],
-                                            'type': 'object'},
-                     'RemoveVolumeParamsResult': {'additionalProperties': False,
-                                                  'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                 'result': {'$ref': '#/definitions/RemoveVolumeParams'}},
-                                                  'required': ['result'],
-                                                  'type': 'object'},
-                     'RemoveVolumeParamsResults': {'additionalProperties': False,
-                                                   'properties': {'results': {'items': {'$ref': '#/definitions/RemoveVolumeParamsResult'},
-                                                                              'type': 'array'}},
-                                                   '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'},
-                                                             'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
-                                                             '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'},
-                     'VolumeAttachmentPlan': {'additionalProperties': False,
-                                              'properties': {'block-device': {'$ref': '#/definitions/BlockDevice'},
-                                                             'life': {'type': 'string'},
-                                                             'machine-tag': {'type': 'string'},
-                                                             'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
-                                                             'volume-tag': {'type': 'string'}},
-                                              'required': ['volume-tag',
-                                                           'machine-tag',
-                                                           'plan-info'],
-                                              'type': 'object'},
-                     'VolumeAttachmentPlanInfo': {'additionalProperties': False,
-                                                  'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                       'type': 'object'},
-                                                                 'device-type': {'type': 'string'}},
-                                                  'type': 'object'},
-                     'VolumeAttachmentPlanResult': {'additionalProperties': False,
-                                                    'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                   'result': {'$ref': '#/definitions/VolumeAttachmentPlan'}},
-                                                    'required': ['result'],
-                                                    'type': 'object'},
-                     'VolumeAttachmentPlanResults': {'additionalProperties': False,
-                                                     'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentPlanResult'},
-                                                                                'type': 'array'}},
-                                                     'type': 'object'},
-                     'VolumeAttachmentPlans': {'additionalProperties': False,
-                                               'properties': {'volume-plans': {'items': {'$ref': '#/definitions/VolumeAttachmentPlan'},
-                                                                               'type': 'array'}},
-                                               'required': ['volume-plans'],
-                                               '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'},
-                    'CreateVolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachmentPlans'},
-                                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                    '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'},
-                    'RemoveFilesystemParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/RemoveFilesystemParamsResults'}},
-                                               'type': 'object'},
-                    'RemoveVolumeAttachmentPlan': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                   'type': 'object'},
-                    'RemoveVolumeParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                          'Result': {'$ref': '#/definitions/RemoveVolumeParamsResults'}},
-                                           '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'},
-                    'SetVolumeAttachmentPlanBlockInfo': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachmentPlans'},
-                                                                        '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'},
-                    'VolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'},
-                                                             'Result': {'$ref': '#/definitions/VolumeAttachmentPlanResults'}},
-                                              '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'},
-                    'WatchApplications': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                          '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'},
-                    'WatchVolumeAttachmentPlans': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}},
-                                                   '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[~MachineStorageId]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='AttachmentLife',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def CreateVolumeAttachmentPlans(self, volume_plans):
-        '''
-        volume_plans : typing.Sequence[~VolumeAttachmentPlan]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='CreateVolumeAttachmentPlans',
-                   version=4,
-                   params=_params)
-        _params['volume-plans'] = volume_plans
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='EnsureDead',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemAttachmentParamsResults)
-    async def FilesystemAttachmentParams(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~FilesystemAttachmentParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='FilesystemAttachmentParams',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemAttachmentResults)
-    async def FilesystemAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~FilesystemAttachmentResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='FilesystemAttachments',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemParamsResults)
-    async def FilesystemParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~FilesystemParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='FilesystemParams',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(FilesystemResults)
-    async def Filesystems(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~FilesystemResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='Filesystems',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='InstanceId',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='Life',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='Remove',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveAttachment(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='RemoveAttachment',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RemoveFilesystemParamsResults)
-    async def RemoveFilesystemParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RemoveFilesystemParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='RemoveFilesystemParams',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveVolumeAttachmentPlan(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='RemoveVolumeAttachmentPlan',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RemoveVolumeParamsResults)
-    async def RemoveVolumeParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RemoveVolumeParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='RemoveVolumeParams',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetFilesystemAttachmentInfo(self, filesystem_attachments):
-        '''
-        filesystem_attachments : typing.Sequence[~FilesystemAttachment]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetFilesystemAttachmentInfo',
-                   version=4,
-                   params=_params)
-        _params['filesystem-attachments'] = filesystem_attachments
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetFilesystemInfo(self, filesystems):
-        '''
-        filesystems : typing.Sequence[~Filesystem]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetFilesystemInfo',
-                   version=4,
-                   params=_params)
-        _params['filesystems'] = filesystems
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetStatus',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetVolumeAttachmentInfo(self, volume_attachments):
-        '''
-        volume_attachments : typing.Sequence[~VolumeAttachment]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetVolumeAttachmentInfo',
-                   version=4,
-                   params=_params)
-        _params['volume-attachments'] = volume_attachments
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetVolumeAttachmentPlanBlockInfo(self, volume_plans):
-        '''
-        volume_plans : typing.Sequence[~VolumeAttachmentPlan]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetVolumeAttachmentPlanBlockInfo',
-                   version=4,
-                   params=_params)
-        _params['volume-plans'] = volume_plans
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetVolumeInfo(self, volumes):
-        '''
-        volumes : typing.Sequence[~Volume]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='SetVolumeInfo',
-                   version=4,
-                   params=_params)
-        _params['volumes'] = volumes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='UpdateStatus',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeAttachmentParamsResults)
-    async def VolumeAttachmentParams(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~VolumeAttachmentParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='VolumeAttachmentParams',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeAttachmentPlanResults)
-    async def VolumeAttachmentPlans(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~VolumeAttachmentPlanResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='VolumeAttachmentPlans',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeAttachmentResults)
-    async def VolumeAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~VolumeAttachmentResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='VolumeAttachments',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BlockDeviceResults)
-    async def VolumeBlockDevices(self, ids):
-        '''
-        ids : typing.Sequence[~MachineStorageId]
-        Returns -> typing.Sequence[~BlockDeviceResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='VolumeBlockDevices',
-                   version=4,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeParamsResults)
-    async def VolumeParams(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~VolumeParamsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='VolumeParams',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(VolumeResults)
-    async def Volumes(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~VolumeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='Volumes',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchApplications(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchApplications',
-                   version=4,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchBlockDevices(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchBlockDevices',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineStorageIdsWatchResults)
-    async def WatchFilesystemAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchFilesystemAttachments',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchFilesystems(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchFilesystems',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchMachines(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchMachines',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineStorageIdsWatchResults)
-    async def WatchVolumeAttachmentPlans(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchVolumeAttachmentPlans',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineStorageIdsWatchResults)
-    async def WatchVolumeAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineStorageIdsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchVolumeAttachments',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchVolumes(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='StorageProvisioner',
-                   request='WatchVolumes',
-                   version=4,
-                   params=_params)
-        _params['entities'] = entities
-        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[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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MetricBatchParam]
-        Returns -> typing.Sequence[~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[~StorageAddParams]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~CharmURL]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityPortRange]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~ActionExecutionResult]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MergeLeadershipSettingsParam]
-        Returns -> typing.Sequence[~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[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[~UnitNetworkConfig]
-        Returns -> typing.Sequence[~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[~EntityPortRange]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnitPair]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[int]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityCharmURL]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityWorkloadVersion]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnitSettings]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 --git a/modules/libjuju/juju/client/_client5.py b/modules/libjuju/juju/client/_client5.py
deleted file mode 100644
index 415aeae..0000000
--- a/modules/libjuju/juju/client/_client5.py
+++ /dev/null
@@ -1,5322 +0,0 @@
-# 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.facade import ReturnMapping, Type
-
-
-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[str]
-        Returns -> typing.Mapping[str, ~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[~Placement]
-        Returns -> typing.Sequence[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[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[~ConsumeApplicationArg]
-        Returns -> typing.Sequence[~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[~ApplicationDeploy]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~Entity]
-        Returns -> typing.Sequence[~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[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[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[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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~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[~ApplicationMetricCredential]
-        Returns -> typing.Sequence[~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[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[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 ControllerFacade(Type):
-    name = 'Controller'
-    version = 5
-    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': {'cacertificates': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                  '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'},
-                     'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  'type': 'object'},
-                     'ControllerConfigResult': {'additionalProperties': False,
-                                                'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                       'type': 'object'}},
-                                                                          'type': 'object'}},
-                                                'required': ['config'],
-                                                'type': 'object'},
-                     'ControllerConfigSet': {'additionalProperties': False,
-                                             'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                    'type': 'object'}},
-                                                                       'type': 'object'}},
-                                             'required': ['config'],
-                                             'type': 'object'},
-                     'DestroyControllerArgs': {'additionalProperties': False,
-                                               'properties': {'destroy-models': {'type': 'boolean'},
-                                                              'destroy-storage': {'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'},
-                                              'type': {'type': 'string'},
-                                              'uuid': {'type': 'string'}},
-                               'required': ['name', 'uuid', 'type', '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'},
-                     'ModelFilesystemInfo': {'additionalProperties': False,
-                                             'properties': {'detachable': {'type': 'boolean'},
-                                                            'id': {'type': 'string'},
-                                                            'message': {'type': 'string'},
-                                                            'provider-id': {'type': 'string'},
-                                                            'status': {'type': 'string'}},
-                                             'required': ['id'],
-                                             'type': 'object'},
-                     'ModelMachineInfo': {'additionalProperties': False,
-                                          'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
-                                                         'has-vote': {'type': 'boolean'},
-                                                         'id': {'type': 'string'},
-                                                         'instance-id': {'type': 'string'},
-                                                         'message': {'type': 'string'},
-                                                         'status': {'type': 'string'},
-                                                         'wants-vote': {'type': 'boolean'}},
-                                          'required': ['id'],
-                                          'type': 'object'},
-                     'ModelStatus': {'additionalProperties': False,
-                                     'properties': {'application-count': {'type': 'integer'},
-                                                    'error': {'$ref': '#/definitions/Error'},
-                                                    'filesystems': {'items': {'$ref': '#/definitions/ModelFilesystemInfo'},
-                                                                    'type': 'array'},
-                                                    'hosted-machine-count': {'type': 'integer'},
-                                                    'life': {'type': 'string'},
-                                                    'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
-                                                                 'type': 'array'},
-                                                    'model-tag': {'type': 'string'},
-                                                    'owner-tag': {'type': 'string'},
-                                                    'volumes': {'items': {'$ref': '#/definitions/ModelVolumeInfo'},
-                                                                'type': 'array'}},
-                                     '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'},
-                     'ModelVolumeInfo': {'additionalProperties': False,
-                                         'properties': {'detachable': {'type': 'boolean'},
-                                                        'id': {'type': 'string'},
-                                                        'message': {'type': 'string'},
-                                                        'provider-id': {'type': 'string'},
-                                                        'status': {'type': 'string'}},
-                                         'required': ['id'],
-                                         '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'},
-                    'ConfigSet': {'properties': {'Params': {'$ref': '#/definitions/ControllerConfigSet'}},
-                                  'type': 'object'},
-                    'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                                   '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[~UserModel]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='AllModels',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudSpecResults)
-    async def CloudSpec(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudSpecResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='CloudSpec',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def ConfigSet(self, config):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ConfigSet',
-                   version=5,
-                   params=_params)
-        _params['config'] = config
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerAPIInfoResults)
-    async def ControllerAPIInfoForModels(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ControllerAPIInfoForModels',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerConfigResult)
-    async def ControllerConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ControllerConfig',
-                   version=5,
-                   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=5,
-                   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=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UserAccessResults)
-    async def GetControllerAccess(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~UserAccessResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='GetControllerAccess',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(HostedModelConfigsResults)
-    async def HostedModelConfigs(self):
-        '''
-
-        Returns -> typing.Sequence[~HostedModelConfig]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='HostedModelConfigs',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(InitiateMigrationResults)
-    async def InitiateMigration(self, specs):
-        '''
-        specs : typing.Sequence[~MigrationSpec]
-        Returns -> typing.Sequence[~InitiateMigrationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='InitiateMigration',
-                   version=5,
-                   params=_params)
-        _params['specs'] = specs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelBlockInfoList)
-    async def ListBlockedModels(self):
-        '''
-
-        Returns -> typing.Sequence[~ModelBlockInfo]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ListBlockedModels',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResults)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, ~ConfigValue]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ModelConfig',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelStatusResults)
-    async def ModelStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ModelStatus]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ModelStatus',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ModifyControllerAccess(self, changes):
-        '''
-        changes : typing.Sequence[~ModifyControllerAccess]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Controller',
-                   request='ModifyControllerAccess',
-                   version=5,
-                   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=5,
-                   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=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class FirewallerFacade(Type):
-    name = 'Firewaller'
-    version = 5
-    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': {'cacertificates': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                  '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'},
-                     'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  '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'},
-                     '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'},
-                     'FirewallRule': {'additionalProperties': False,
-                                      'properties': {'known-service': {'type': 'string'},
-                                                     'whitelist-cidrs': {'items': {'type': 'string'},
-                                                                         'type': 'array'}},
-                                      'required': ['known-service'],
-                                      'type': 'object'},
-                     'KnownServiceArgs': {'additionalProperties': False,
-                                          'properties': {'known-services': {'items': {'type': 'string'},
-                                                                            'type': 'array'}},
-                                          'required': ['known-services'],
-                                          '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'},
-                     'ListFirewallRulesResults': {'additionalProperties': False,
-                                                  'properties': {'Rules': {'items': {'$ref': '#/definitions/FirewallRule'},
-                                                                           'type': 'array'}},
-                                                  'required': ['Rules'],
-                                                  'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'MacaroonResult': {'additionalProperties': False,
-                                        'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                       'result': {'$ref': '#/definitions/Macaroon'}},
-                                        'type': 'object'},
-                     'MacaroonResults': {'additionalProperties': False,
-                                         'properties': {'results': {'items': {'$ref': '#/definitions/MacaroonResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['results'],
-                                         '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'},
-                     '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'},
-                     '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': {'AreManuallyProvisioned': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/BoolResults'}},
-                                               'type': 'object'},
-                    'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/CloudSpecResults'}},
-                                  'type': 'object'},
-                    'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                                   'type': 'object'},
-                    'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
-                                         'type': 'object'},
-                    'FirewallRules': {'properties': {'Params': {'$ref': '#/definitions/KnownServiceArgs'},
-                                                     'Result': {'$ref': '#/definitions/ListFirewallRulesResults'}},
-                                      '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'},
-                    'MacaroonForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                            'Result': {'$ref': '#/definitions/MacaroonResults'}},
-                                             'type': 'object'},
-                    'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}},
-                                    'type': 'object'},
-                    'SetRelationsStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'},
-                                                          'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                           'type': 'object'},
-                    'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                             'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                              'type': 'object'},
-                    'WatchEgressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                        'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                         'type': 'object'},
-                    'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                   'type': 'object'},
-                    'WatchIngressAddressesForRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                         'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                          '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(BoolResults)
-    async def AreManuallyProvisioned(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='AreManuallyProvisioned',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudSpecResults)
-    async def CloudSpec(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~CloudSpecResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='CloudSpec',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerAPIInfoResults)
-    async def ControllerAPIInfoForModels(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='ControllerAPIInfoForModels',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerConfigResult)
-    async def ControllerConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='ControllerConfig',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ListFirewallRulesResults)
-    async def FirewallRules(self, known_services):
-        '''
-        known_services : typing.Sequence[str]
-        Returns -> typing.Sequence[~FirewallRule]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='FirewallRules',
-                   version=5,
-                   params=_params)
-        _params['known-services'] = known_services
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def GetAssignedMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='GetAssignedMachine',
-                   version=5,
-                   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=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def GetExposed(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='GetExposed',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def GetMachineActiveSubnets(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='GetMachineActiveSubnets',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachinePortsResults)
-    async def GetMachinePorts(self, params):
-        '''
-        params : typing.Sequence[~MachinePorts]
-        Returns -> typing.Sequence[~MachinePortsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='GetMachinePorts',
-                   version=5,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='InstanceId',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='Life',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MacaroonResults)
-    async def MacaroonForRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MacaroonResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='MacaroonForRelations',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='ModelConfig',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetRelationsStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='SetRelationsStatus',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='Watch',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchEgressAddressesForRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='WatchEgressAddressesForRelations',
-                   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='Firewaller',
-                   request='WatchForModelConfigChanges',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchIngressAddressesForRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='WatchIngressAddressesForRelations',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachines(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='WatchModelMachines',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchOpenedPorts(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='WatchOpenedPorts',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnits(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Firewaller',
-                   request='WatchUnits',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class MachineManagerFacade(Type):
-    name = 'MachineManager'
-    version = 5
-    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'},
-                     'DestroyMachinesParams': {'additionalProperties': False,
-                                               'properties': {'force': {'type': 'boolean'},
-                                                              'keep': {'type': 'boolean'},
-                                                              'machine-tags': {'items': {'type': 'string'},
-                                                                               'type': 'array'}},
-                                               'required': ['machine-tags'],
-                                               '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'},
-                     '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'},
-                     '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'},
-                     'Placement': {'additionalProperties': False,
-                                   'properties': {'directive': {'type': 'string'},
-                                                  'scope': {'type': 'string'}},
-                                   'required': ['scope', 'directive'],
-                                   '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'},
-                     'UpdateSeriesArg': {'additionalProperties': False,
-                                         'properties': {'force': {'type': 'boolean'},
-                                                        'series': {'type': 'string'},
-                                                        'tag': {'$ref': '#/definitions/Entity'}},
-                                         'required': ['tag', 'force', 'series'],
-                                         'type': 'object'},
-                     'UpdateSeriesArgs': {'additionalProperties': False,
-                                          'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
-                                                                  'type': 'array'}},
-                                          'required': ['args'],
-                                          'type': 'object'},
-                     'UpgradeSeriesNotificationParam': {'additionalProperties': False,
-                                                        'properties': {'entity': {'$ref': '#/definitions/Entity'},
-                                                                       'watcher-id': {'type': 'string'}},
-                                                        'required': ['entity',
-                                                                     'watcher-id'],
-                                                        'type': 'object'},
-                     'UpgradeSeriesNotificationParams': {'additionalProperties': False,
-                                                         'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesNotificationParam'},
-                                                                                   'type': 'array'}},
-                                                         'required': ['params'],
-                                                         'type': 'object'},
-                     'UpgradeSeriesUnitsResult': {'additionalProperties': False,
-                                                  'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                 'unit-names': {'items': {'type': 'string'},
-                                                                                'type': 'array'}},
-                                                  'required': ['unit-names'],
-                                                  'type': 'object'},
-                     'UpgradeSeriesUnitsResults': {'additionalProperties': False,
-                                                   'properties': {'Results': {'items': {'$ref': '#/definitions/UpgradeSeriesUnitsResult'},
-                                                                              'type': 'array'}},
-                                                   'required': ['Results'],
-                                                   '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               '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'},
-                    'DestroyMachineWithParams': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachinesParams'},
-                                                                'Result': {'$ref': '#/definitions/DestroyMachineResults'}},
-                                                 'type': 'object'},
-                    'ForceDestroyMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                           'Result': {'$ref': '#/definitions/DestroyMachineResults'}},
-                                            'type': 'object'},
-                    'GetUpgradeSeriesMessages': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesNotificationParams'},
-                                                                'Result': {'$ref': '#/definitions/StringsResults'}},
-                                                 'type': 'object'},
-                    'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/ModelInstanceTypesConstraints'},
-                                                     'Result': {'$ref': '#/definitions/InstanceTypesResults'}},
-                                      'type': 'object'},
-                    'UpgradeSeriesComplete': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArg'},
-                                                             'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                              'type': 'object'},
-                    'UpgradeSeriesPrepare': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArg'},
-                                                            'Result': {'$ref': '#/definitions/ErrorResult'}},
-                                             'type': 'object'},
-                    'UpgradeSeriesValidate': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
-                                                             'Result': {'$ref': '#/definitions/UpgradeSeriesUnitsResults'}},
-                                              'type': 'object'},
-                    'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                       'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                        'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddMachinesResults)
-    async def AddMachines(self, params):
-        '''
-        params : typing.Sequence[~AddMachineParams]
-        Returns -> typing.Sequence[~AddMachinesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='AddMachines',
-                   version=5,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DestroyMachineResults)
-    async def DestroyMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~DestroyMachineResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='DestroyMachine',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DestroyMachineResults)
-    async def DestroyMachineWithParams(self, force, keep, machine_tags):
-        '''
-        force : bool
-        keep : bool
-        machine_tags : typing.Sequence[str]
-        Returns -> typing.Sequence[~DestroyMachineResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='DestroyMachineWithParams',
-                   version=5,
-                   params=_params)
-        _params['force'] = force
-        _params['keep'] = keep
-        _params['machine-tags'] = machine_tags
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DestroyMachineResults)
-    async def ForceDestroyMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~DestroyMachineResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='ForceDestroyMachine',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def GetUpgradeSeriesMessages(self, params):
-        '''
-        params : typing.Sequence[~UpgradeSeriesNotificationParam]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='GetUpgradeSeriesMessages',
-                   version=5,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(InstanceTypesResults)
-    async def InstanceTypes(self, constraints):
-        '''
-        constraints : typing.Sequence[~ModelInstanceTypesConstraint]
-        Returns -> typing.Sequence[~InstanceTypesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='InstanceTypes',
-                   version=5,
-                   params=_params)
-        _params['constraints'] = constraints
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResult)
-    async def UpgradeSeriesComplete(self, force, series, tag):
-        '''
-        force : bool
-        series : str
-        tag : Entity
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='UpgradeSeriesComplete',
-                   version=5,
-                   params=_params)
-        _params['force'] = force
-        _params['series'] = series
-        _params['tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResult)
-    async def UpgradeSeriesPrepare(self, force, series, tag):
-        '''
-        force : bool
-        series : str
-        tag : Entity
-        Returns -> Error
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='UpgradeSeriesPrepare',
-                   version=5,
-                   params=_params)
-        _params['force'] = force
-        _params['series'] = series
-        _params['tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpgradeSeriesUnitsResults)
-    async def UpgradeSeriesValidate(self, args):
-        '''
-        args : typing.Sequence[~UpdateSeriesArg]
-        Returns -> typing.Sequence[~UpgradeSeriesUnitsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='UpgradeSeriesValidate',
-                   version=5,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchUpgradeSeriesNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='MachineManager',
-                   request='WatchUpgradeSeriesNotifications',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-class ModelManagerFacade(Type):
-    name = 'ModelManager'
-    version = 5
-    schema =     {'definitions': {'ChangeModelCredentialParams': {'additionalProperties': False,
-                                                     'properties': {'credential-tag': {'type': 'string'},
-                                                                    'model-tag': {'type': 'string'}},
-                                                     'required': ['model-tag',
-                                                                  'credential-tag'],
-                                                     'type': 'object'},
-                     'ChangeModelCredentialsParams': {'additionalProperties': False,
-                                                      'properties': {'model-credentials': {'items': {'$ref': '#/definitions/ChangeModelCredentialParams'},
-                                                                                           'type': 'array'}},
-                                                      'required': ['model-credentials'],
-                                                      'type': 'object'},
-                     'DestroyModelParams': {'additionalProperties': False,
-                                            'properties': {'destroy-storage': {'type': 'boolean'},
-                                                           'model-tag': {'type': 'string'}},
-                                            'required': ['model-tag'],
-                                            'type': 'object'},
-                     'DestroyModelsParams': {'additionalProperties': False,
-                                             'properties': {'models': {'items': {'$ref': '#/definitions/DestroyModelParams'},
-                                                                       'type': 'array'}},
-                                             'required': ['models'],
-                                             'type': 'object'},
-                     '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'},
-                                              'type': {'type': 'string'},
-                                              'uuid': {'type': 'string'}},
-                               'required': ['name', 'uuid', 'type', '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'},
-                     'ModelEntityCount': {'additionalProperties': False,
-                                          'properties': {'count': {'type': 'integer'},
-                                                         'entity': {'type': 'string'}},
-                                          'required': ['entity', 'count'],
-                                          'type': 'object'},
-                     'ModelFilesystemInfo': {'additionalProperties': False,
-                                             'properties': {'detachable': {'type': 'boolean'},
-                                                            'id': {'type': 'string'},
-                                                            'message': {'type': 'string'},
-                                                            'provider-id': {'type': 'string'},
-                                                            'status': {'type': 'string'}},
-                                             'required': ['id'],
-                                             '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'},
-                                                  'type': {'type': 'string'},
-                                                  'users': {'items': {'$ref': '#/definitions/ModelUserInfo'},
-                                                            'type': 'array'},
-                                                  'uuid': {'type': 'string'}},
-                                   'required': ['name',
-                                                'type',
-                                                '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'},
-                                                         'message': {'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'},
-                                                    'error': {'$ref': '#/definitions/Error'},
-                                                    'filesystems': {'items': {'$ref': '#/definitions/ModelFilesystemInfo'},
-                                                                    'type': 'array'},
-                                                    'hosted-machine-count': {'type': 'integer'},
-                                                    'life': {'type': 'string'},
-                                                    'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'},
-                                                                 'type': 'array'},
-                                                    'model-tag': {'type': 'string'},
-                                                    'owner-tag': {'type': 'string'},
-                                                    'volumes': {'items': {'$ref': '#/definitions/ModelVolumeInfo'},
-                                                                'type': 'array'}},
-                                     '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'},
-                     'ModelSummariesRequest': {'additionalProperties': False,
-                                               'properties': {'all': {'type': 'boolean'},
-                                                              'user-tag': {'type': 'string'}},
-                                               'required': ['user-tag'],
-                                               'type': 'object'},
-                     'ModelSummary': {'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'},
-                                                     'counts': {'items': {'$ref': '#/definitions/ModelEntityCount'},
-                                                                'type': 'array'},
-                                                     'default-series': {'type': 'string'},
-                                                     'last-connection': {'format': 'date-time',
-                                                                         'type': 'string'},
-                                                     'life': {'type': 'string'},
-                                                     'migration': {'$ref': '#/definitions/ModelMigrationStatus'},
-                                                     'name': {'type': 'string'},
-                                                     'owner-tag': {'type': 'string'},
-                                                     'provider-type': {'type': 'string'},
-                                                     'sla': {'$ref': '#/definitions/ModelSLAInfo'},
-                                                     'status': {'$ref': '#/definitions/EntityStatus'},
-                                                     'type': {'type': 'string'},
-                                                     'user-access': {'type': 'string'},
-                                                     'uuid': {'type': 'string'}},
-                                      'required': ['name',
-                                                   'uuid',
-                                                   'type',
-                                                   'controller-uuid',
-                                                   'cloud-tag',
-                                                   'owner-tag',
-                                                   'life',
-                                                   'user-access',
-                                                   'last-connection',
-                                                   'counts',
-                                                   'sla',
-                                                   'agent-version'],
-                                      'type': 'object'},
-                     'ModelSummaryResult': {'additionalProperties': False,
-                                            'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                           'result': {'$ref': '#/definitions/ModelSummary'}},
-                                            'type': 'object'},
-                     'ModelSummaryResults': {'additionalProperties': False,
-                                             'properties': {'results': {'items': {'$ref': '#/definitions/ModelSummaryResult'},
-                                                                        'type': 'array'}},
-                                             'required': ['results'],
-                                             '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'},
-                     'ModelVolumeInfo': {'additionalProperties': False,
-                                         'properties': {'detachable': {'type': 'boolean'},
-                                                        'id': {'type': 'string'},
-                                                        'message': {'type': 'string'},
-                                                        'provider-id': {'type': 'string'},
-                                                        'status': {'type': 'string'}},
-                                         'required': ['id'],
-                                         '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': {'ChangeModelCredential': {'properties': {'Params': {'$ref': '#/definitions/ChangeModelCredentialsParams'},
-                                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                              'type': 'object'},
-                    'CreateModel': {'properties': {'Params': {'$ref': '#/definitions/ModelCreateArgs'},
-                                                   'Result': {'$ref': '#/definitions/ModelInfo'}},
-                                    'type': 'object'},
-                    'DestroyModels': {'properties': {'Params': {'$ref': '#/definitions/DestroyModelsParams'},
-                                                     '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'},
-                    'ListModelSummaries': {'properties': {'Params': {'$ref': '#/definitions/ModelSummariesRequest'},
-                                                          'Result': {'$ref': '#/definitions/ModelSummaryResults'}},
-                                           '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(ErrorResults)
-    async def ChangeModelCredential(self, model_credentials):
-        '''
-        model_credentials : typing.Sequence[~ChangeModelCredentialParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ChangeModelCredential',
-                   version=5,
-                   params=_params)
-        _params['model-credentials'] = model_credentials
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelInfo)
-    async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region):
-        '''
-        cloud_tag : str
-        config : typing.Mapping[str, typing.Any]
-        credential : str
-        name : str
-        owner_tag : str
-        region : str
-        Returns -> typing.Union[_ForwardRef('Number'), str, typing.Sequence[~ModelMachineInfo], _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence[~ModelUserInfo]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='CreateModel',
-                   version=5,
-                   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, models):
-        '''
-        models : typing.Sequence[~DestroyModelParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='DestroyModels',
-                   version=5,
-                   params=_params)
-        _params['models'] = models
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def DumpModels(self, entities, simplified):
-        '''
-        entities : typing.Sequence[~Entity]
-        simplified : bool
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='DumpModels',
-                   version=5,
-                   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[~Entity]
-        Returns -> typing.Sequence[~MapResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='DumpModelsDB',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelSummaryResults)
-    async def ListModelSummaries(self, all_, user_tag):
-        '''
-        all_ : bool
-        user_tag : str
-        Returns -> typing.Sequence[~ModelSummaryResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ListModelSummaries',
-                   version=5,
-                   params=_params)
-        _params['all'] = all_
-        _params['user-tag'] = user_tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UserModelList)
-    async def ListModels(self, tag):
-        '''
-        tag : str
-        Returns -> typing.Sequence[~UserModel]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ListModels',
-                   version=5,
-                   params=_params)
-        _params['tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelDefaultsResult)
-    async def ModelDefaults(self):
-        '''
-
-        Returns -> typing.Mapping[str, ~ModelDefaults]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ModelDefaults',
-                   version=5,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelInfoResults)
-    async def ModelInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ModelInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ModelInfo',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelStatusResults)
-    async def ModelStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ModelStatus]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ModelStatus',
-                   version=5,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ModifyModelAccess(self, changes):
-        '''
-        changes : typing.Sequence[~ModifyModelAccess]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='ModifyModelAccess',
-                   version=5,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetModelDefaults(self, config):
-        '''
-        config : typing.Sequence[~ModelDefaultValues]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='SetModelDefaults',
-                   version=5,
-                   params=_params)
-        _params['config'] = config
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UnsetModelDefaults(self, keys):
-        '''
-        keys : typing.Sequence[~ModelUnsetKeys]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='ModelManager',
-                   request='UnsetModelDefaults',
-                   version=5,
-                   params=_params)
-        _params['keys'] = keys
-        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[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[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MetricBatchParam]
-        Returns -> typing.Sequence[~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[~StorageAddParams]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[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[~CharmURL]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityPortRange]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~ActionExecutionResult]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~MergeLeadershipSettingsParam]
-        Returns -> typing.Sequence[~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[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[str]
-        unit : str
-        Returns -> typing.Mapping[str, ~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[~EntityPortRange]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnitPair]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[int]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityCharmURL]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityStatusArgs]
-        Returns -> typing.Sequence[~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[~EntityWorkloadVersion]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnitSettings]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~RelationUnit]
-        Returns -> typing.Sequence[~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[~StorageAttachmentId]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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[~Entity]
-        Returns -> typing.Sequence[~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 --git a/modules/libjuju/juju/client/_client7.py b/modules/libjuju/juju/client/_client7.py
deleted file mode 100644
index 1d6cd48..0000000
--- a/modules/libjuju/juju/client/_client7.py
+++ /dev/null
@@ -1,1770 +0,0 @@
-# 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 ProvisionerFacade(Type):
-    name = 'Provisioner'
-    version = 7
-    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'},
-                     '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'},
-                     'CharmLXDProfile': {'additionalProperties': False,
-                                         'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                   'type': 'object'},
-                                                        'description': {'type': 'string'},
-                                                        'devices': {'patternProperties': {'.*': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                                 'type': 'object'}},
-                                                                    'type': 'object'}},
-                                         'required': ['config',
-                                                      'description',
-                                                      'devices'],
-                                         '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'},
-                                                        'cloudinit-userdata': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                            'type': 'object'}},
-                                                                               'type': 'object'},
-                                                        'container-inherit-properties': {'type': 'string'},
-                                                        'juju-proxy': {'$ref': '#/definitions/Settings'},
-                                                        'legacy-proxy': {'$ref': '#/definitions/Settings'},
-                                                        'provider-type': {'type': 'string'},
-                                                        'snap-proxy': {'$ref': '#/definitions/Settings'},
-                                                        'ssl-hostname-verification': {'type': 'boolean'}},
-                                         'required': ['provider-type',
-                                                      'authorized-keys',
-                                                      'ssl-hostname-verification',
-                                                      'legacy-proxy',
-                                                      'juju-proxy',
-                                                      'apt-proxy',
-                                                      'snap-proxy',
-                                                      'apt-mirror',
-                                                      'UpdateBehavior'],
-                                         'type': 'object'},
-                     'ContainerLXDProfile': {'additionalProperties': False,
-                                             'properties': {'name': {'type': 'string'},
-                                                            'profile': {'$ref': '#/definitions/CharmLXDProfile'}},
-                                             'required': ['profile', 'name'],
-                                             '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'},
-                     'ContainerProfileResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'lxd-profiles': {'items': {'$ref': '#/definitions/ContainerLXDProfile'},
-                                                                                'type': 'array'}},
-                                                'type': 'object'},
-                     'ContainerProfileResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/ContainerProfileResult'},
-                                                                            'type': 'array'}},
-                                                 'required': ['results'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResult': {'additionalProperties': False,
-                                                 'properties': {'addresses': {'items': {'type': 'string'},
-                                                                              'type': 'array'},
-                                                                'cacert': {'type': 'string'},
-                                                                'error': {'$ref': '#/definitions/Error'}},
-                                                 'required': ['addresses',
-                                                              'cacert'],
-                                                 'type': 'object'},
-                     'ControllerAPIInfoResults': {'additionalProperties': False,
-                                                  'properties': {'results': {'items': {'$ref': '#/definitions/ControllerAPIInfoResult'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  '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'},
-                                                         'mac-address': {'type': 'string'}},
-                                          'required': ['host-device-name',
-                                                       'bridge-name',
-                                                       'mac-address'],
-                                          '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': {'agentstream': {'type': 'string'},
-                                                        'arch': {'type': 'string'},
-                                                        'major': {'type': 'integer'},
-                                                        'minor': {'type': 'integer'},
-                                                        'number': {'$ref': '#/definitions/Number'},
-                                                        'series': {'type': 'string'}},
-                                         'required': ['number',
-                                                      'major',
-                                                      'minor',
-                                                      'arch',
-                                                      'series',
-                                                      'agentstream'],
-                                         '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'},
-                                                     'charm-profiles': {'items': {'type': 'string'},
-                                                                        'type': 'array'},
-                                                     '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',
-                                                   'charm-profiles'],
-                                      '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'},
-                                                      'is-default-gateway': {'type': 'boolean'},
-                                                      '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'},
-                     'ProfileChangeResult': {'additionalProperties': False,
-                                             'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                            'new-profile-name': {'type': 'string'},
-                                                            'old-profile-name': {'type': 'string'},
-                                                            'profile': {'$ref': '#/definitions/CharmLXDProfile'},
-                                                            'subordinate': {'type': 'boolean'}},
-                                             'type': 'object'},
-                     'ProfileChangeResults': {'additionalProperties': False,
-                                              'properties': {'results': {'items': {'$ref': '#/definitions/ProfileChangeResult'},
-                                                                         'type': 'array'}},
-                                              'required': ['results'],
-                                              'type': 'object'},
-                     'ProvisioningInfo': {'additionalProperties': False,
-                                          'properties': {'charm-lxd-profiles': {'items': {'type': 'string'},
-                                                                                'type': 'array'},
-                                                         'cloudinit-userdata': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                             'type': 'object'}},
-                                                                                'type': 'object'},
-                                                         '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'},
-                     'SetProfileArg': {'additionalProperties': False,
-                                       'properties': {'entity': {'$ref': '#/definitions/Entity'},
-                                                      'profiles': {'items': {'type': 'string'},
-                                                                   'type': 'array'}},
-                                       'required': ['entity', 'profiles'],
-                                       'type': 'object'},
-                     'SetProfileArgs': {'additionalProperties': False,
-                                        'properties': {'args': {'items': {'$ref': '#/definitions/SetProfileArg'},
-                                                                'type': 'array'}},
-                                        'required': ['args'],
-                                        'type': 'object'},
-                     'SetProfileUpgradeCompleteArg': {'additionalProperties': False,
-                                                      'properties': {'entity': {'$ref': '#/definitions/Entity'},
-                                                                     'message': {'type': 'string'}},
-                                                      'required': ['entity',
-                                                                   'message'],
-                                                      'type': 'object'},
-                     'SetProfileUpgradeCompleteArgs': {'additionalProperties': False,
-                                                       'properties': {'args': {'items': {'$ref': '#/definitions/SetProfileUpgradeCompleteArg'},
-                                                                               'type': 'array'}},
-                                                       'required': ['args'],
-                                                       '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'},
-                     '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'},
-                     '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               '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'},
-                                                             'plan-info': {'$ref': '#/definitions/VolumeAttachmentPlanInfo'},
-                                                             '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'},
-                     'VolumeAttachmentPlanInfo': {'additionalProperties': False,
-                                                  'properties': {'device-attributes': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                       'type': 'object'},
-                                                                 'device-type': {'type': 'string'}},
-                                                  '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'},
-                    'AvailabilityZone': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                        'Result': {'$ref': '#/definitions/StringResults'}},
-                                         'type': 'object'},
-                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
-                               'type': 'object'},
-                    'CharmProfileChangeInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/ProfileChangeResults'}},
-                                               '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'},
-                    'ControllerAPIInfoForModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                  'Result': {'$ref': '#/definitions/ControllerAPIInfoResults'}},
-                                                   'type': 'object'},
-                    'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}},
-                                         'type': 'object'},
-                    'DistributionGroup': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                         'Result': {'$ref': '#/definitions/DistributionGroupResults'}},
-                                          'type': 'object'},
-                    'DistributionGroupByMachineId': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                    'Result': {'$ref': '#/definitions/StringsResults'}},
-                                                     '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'},
-                    'GetContainerProfileInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/ContainerProfileResults'}},
-                                                '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'},
-                    'KeepInstance': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                    'Result': {'$ref': '#/definitions/BoolResults'}},
-                                     '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'},
-                    'RemoveUpgradeCharmProfileData': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                     'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                      'type': 'object'},
-                    'Series': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                              'Result': {'$ref': '#/definitions/StringResults'}},
-                               'type': 'object'},
-                    'SetCharmProfiles': {'properties': {'Params': {'$ref': '#/definitions/SetProfileArgs'},
-                                                        'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                         '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'},
-                    'SetUpgradeCharmProfileComplete': {'properties': {'Params': {'$ref': '#/definitions/SetProfileUpgradeCompleteArgs'},
-                                                                      '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'},
-                    'WatchContainersCharmProfiles': {'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'},
-                    'WatchModelMachinesCharmProfiles': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}},
-                                                        'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(StringsResult)
-    async def APIAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='APIAddresses',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='APIHostPorts',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def AvailabilityZone(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='AvailabilityZone',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BytesResult)
-    async def CACert(self):
-        '''
-
-        Returns -> typing.Sequence[int]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='CACert',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ProfileChangeResults)
-    async def CharmProfileChangeInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ProfileChangeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='CharmProfileChangeInfo',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ConstraintsResults)
-    async def Constraints(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConstraintsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Constraints',
-                   version=7,
-                   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'), bool]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ContainerConfig',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ContainerManagerConfig)
-    async def ContainerManagerConfig(self, type_):
-        '''
-        type_ : str
-        Returns -> typing.Mapping[str, str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ContainerManagerConfig',
-                   version=7,
-                   params=_params)
-        _params['type'] = type_
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerAPIInfoResults)
-    async def ControllerAPIInfoForModels(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ControllerAPIInfoForModels',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ControllerConfigResult)
-    async def ControllerConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ControllerConfig',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DistributionGroupResults)
-    async def DistributionGroup(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~DistributionGroupResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='DistributionGroup',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResults)
-    async def DistributionGroupByMachineId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='DistributionGroupByMachineId',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='EnsureDead',
-                   version=7,
-                   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[~Tools]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='FindTools',
-                   version=7,
-                   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[~Entity]
-        Returns -> typing.Sequence[~MachineNetworkConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='GetContainerInterfaceInfo',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ContainerProfileResults)
-    async def GetContainerProfileInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ContainerProfileResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='GetContainerProfileInfo',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(HostNetworkChangeResults)
-    async def HostChangesForContainers(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~HostNetworkChange]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='HostChangesForContainers',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def InstanceId(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='InstanceId',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def InstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='InstanceStatus',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def KeepInstance(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='KeepInstance',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Life',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def MachinesWithTransientErrors(self):
-        '''
-
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='MachinesWithTransientErrors',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def MarkMachinesForRemoval(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='MarkMachinesForRemoval',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ModelConfig',
-                   version=7,
-                   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=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachineNetworkConfigResults)
-    async def PrepareContainerInterfaceInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachineNetworkConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='PrepareContainerInterfaceInfo',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ProvisioningInfoResults)
-    async def ProvisioningInfo(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ProvisioningInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ProvisioningInfo',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ReleaseContainerAddresses(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='ReleaseContainerAddresses',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Remove(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Remove',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveUpgradeCharmProfileData(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='RemoveUpgradeCharmProfileData',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def Series(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Series',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetCharmProfiles(self, args):
-        '''
-        args : typing.Sequence[~SetProfileArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetCharmProfiles',
-                   version=7,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetHostMachineNetworkConfig(self, config, tag):
-        '''
-        config : typing.Sequence[~NetworkConfig]
-        tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetHostMachineNetworkConfig',
-                   version=7,
-                   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[~InstanceInfo]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetInstanceInfo',
-                   version=7,
-                   params=_params)
-        _params['machines'] = machines
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetInstanceStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetInstanceStatus',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def SetObservedNetworkConfig(self, config, tag):
-        '''
-        config : typing.Sequence[~NetworkConfig]
-        tag : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetObservedNetworkConfig',
-                   version=7,
-                   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[~EntityPassword]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetPasswords',
-                   version=7,
-                   params=_params)
-        _params['changes'] = changes
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetProviderNetworkConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetProviderNetworkConfig',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetStatus',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetSupportedContainers(self, params):
-        '''
-        params : typing.Sequence[~MachineContainers]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetSupportedContainers',
-                   version=7,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetUpgradeCharmProfileComplete(self, args):
-        '''
-        args : typing.Sequence[~SetProfileUpgradeCompleteArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='SetUpgradeCharmProfileComplete',
-                   version=7,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsResult)
-    async def StateAddresses(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='StateAddresses',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def Status(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Status',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ToolsResults)
-    async def Tools(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ToolsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='Tools',
-                   version=7,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='UpdateStatus',
-                   version=7,
-                   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=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchAllContainers(self, params):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='WatchAllContainers',
-                   version=7,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchContainers(self, params):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='WatchContainers',
-                   version=7,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchContainersCharmProfiles(self, params):
-        '''
-        params : typing.Sequence[~WatchContainer]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='WatchContainersCharmProfiles',
-                   version=7,
-                   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=7,
-                   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=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachines(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='WatchModelMachines',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResult)
-    async def WatchModelMachinesCharmProfiles(self):
-        '''
-
-        Returns -> typing.Union[typing.Sequence[str], _ForwardRef('Error'), str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Provisioner',
-                   request='WatchModelMachinesCharmProfiles',
-                   version=7,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
diff --git a/modules/libjuju/juju/client/_client8.py b/modules/libjuju/juju/client/_client8.py
deleted file mode 100644
index 35d3caf..0000000
--- a/modules/libjuju/juju/client/_client8.py
+++ /dev/null
@@ -1,1278 +0,0 @@
-# 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 = 8
-    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'},
-                                                            'policy': {'type': 'string'}},
-                                             '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'},
-                                                    'via-cidrs': {'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'},
-                     'ApplicationConfigSet': {'additionalProperties': False,
-                                              'properties': {'application': {'type': 'string'},
-                                                             'config': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                        'type': 'object'}},
-                                              'required': ['application', 'config'],
-                                              'type': 'object'},
-                     'ApplicationConfigSetArgs': {'additionalProperties': False,
-                                                  'properties': {'Args': {'items': {'$ref': '#/definitions/ApplicationConfigSet'},
-                                                                          'type': 'array'}},
-                                                  'required': ['Args'],
-                                                  'type': 'object'},
-                     'ApplicationConfigUnsetArgs': {'additionalProperties': False,
-                                                    'properties': {'Args': {'items': {'$ref': '#/definitions/ApplicationUnset'},
-                                                                            'type': 'array'}},
-                                                    'required': ['Args'],
-                                                    'type': 'object'},
-                     'ApplicationConstraint': {'additionalProperties': False,
-                                               'properties': {'constraints': {'$ref': '#/definitions/Value'},
-                                                              'error': {'$ref': '#/definitions/Error'}},
-                                               'required': ['constraints'],
-                                               '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'},
-                                                          'devices': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}},
-                                                                      'type': 'object'},
-                                                          'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}},
-                                                                                'type': 'object'},
-                                                          'num-units': {'type': 'integer'},
-                                                          'placement': {'items': {'$ref': '#/definitions/Placement'},
-                                                                        'type': 'array'},
-                                                          'policy': {'type': 'string'},
-                                                          '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'},
-                     'ApplicationGetConfigResults': {'additionalProperties': False,
-                                                     'properties': {'Results': {'items': {'$ref': '#/definitions/ConfigResult'},
-                                                                                'type': 'array'}},
-                                                     'required': ['Results'],
-                                                     'type': 'object'},
-                     'ApplicationGetConstraintsResults': {'additionalProperties': False,
-                                                          'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationConstraint'},
-                                                                                     'type': 'array'}},
-                                                          'required': ['results'],
-                                                          'type': 'object'},
-                     'ApplicationGetResults': {'additionalProperties': False,
-                                               'properties': {'application': {'type': 'string'},
-                                                              'application-config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                                                  'type': 'object'}},
-                                                                                     'type': 'object'},
-                                                              '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'},
-                     'ApplicationOfferDetails': {'additionalProperties': False,
-                                                 'properties': {'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'},
-                                                                'offer-uuid': {'type': 'string'},
-                                                                'source-model-tag': {'type': 'string'},
-                                                                'spaces': {'items': {'$ref': '#/definitions/RemoteSpace'},
-                                                                           'type': 'array'},
-                                                                'users': {'items': {'$ref': '#/definitions/OfferUserDetails'},
-                                                                          'type': 'array'}},
-                                                 'required': ['source-model-tag',
-                                                              'offer-uuid',
-                                                              'offer-url',
-                                                              'offer-name',
-                                                              'application-description'],
-                                                 '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': {'type': 'boolean'},
-                                                            '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',
-                                                          'force-units',
-                                                          'force-series'],
-                                             'type': 'object'},
-                     'ApplicationSetCharmProfile': {'additionalProperties': False,
-                                                    'properties': {'application': {'type': 'string'},
-                                                                   'charm-url': {'type': 'string'}},
-                                                    'required': ['application',
-                                                                 'charm-url'],
-                                                    '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': {'type': 'boolean'},
-                                                          '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',
-                                                        'force',
-                                                        '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'},
-                     'ConfigResult': {'additionalProperties': False,
-                                      'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True,
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                     'error': {'$ref': '#/definitions/Error'}},
-                                      'required': ['config'],
-                                      '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': {'ApplicationOfferDetails': {'$ref': '#/definitions/ApplicationOfferDetails'},
-                                                              'application-alias': {'type': 'string'},
-                                                              'external-controller': {'$ref': '#/definitions/ExternalControllerInfo'},
-                                                              'macaroon': {'$ref': '#/definitions/Macaroon'}},
-                                               'required': ['ApplicationOfferDetails'],
-                                               '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'},
-                     'DestroyApplicationParams': {'additionalProperties': False,
-                                                  'properties': {'application-tag': {'type': 'string'},
-                                                                 'destroy-storage': {'type': 'boolean'}},
-                                                  'required': ['application-tag'],
-                                                  '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'},
-                     'DestroyApplicationsParams': {'additionalProperties': False,
-                                                   'properties': {'applications': {'items': {'$ref': '#/definitions/DestroyApplicationParams'},
-                                                                                   'type': 'array'}},
-                                                   'required': ['applications'],
-                                                   'type': 'object'},
-                     'DestroyConsumedApplicationParams': {'additionalProperties': False,
-                                                          'properties': {'application-tag': {'type': 'string'}},
-                                                          'required': ['application-tag'],
-                                                          'type': 'object'},
-                     'DestroyConsumedApplicationsParams': {'additionalProperties': False,
-                                                           'properties': {'applications': {'items': {'$ref': '#/definitions/DestroyConsumedApplicationParams'},
-                                                                                           'type': 'array'}},
-                                                           'required': ['applications'],
-                                                           'type': 'object'},
-                     'DestroyRelation': {'additionalProperties': False,
-                                         'properties': {'endpoints': {'items': {'type': 'string'},
-                                                                      'type': 'array'},
-                                                        'relation-id': {'type': 'integer'}},
-                                         'required': ['relation-id'],
-                                         'type': 'object'},
-                     'DestroyUnitInfo': {'additionalProperties': False,
-                                         'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'},
-                                                                              'type': 'array'},
-                                                        'detached-storage': {'items': {'$ref': '#/definitions/Entity'},
-                                                                             'type': 'array'}},
-                                         'type': 'object'},
-                     'DestroyUnitParams': {'additionalProperties': False,
-                                           'properties': {'destroy-storage': {'type': 'boolean'},
-                                                          'unit-tag': {'type': 'string'}},
-                                           'required': ['unit-tag'],
-                                           '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'},
-                     'DestroyUnitsParams': {'additionalProperties': False,
-                                            'properties': {'units': {'items': {'$ref': '#/definitions/DestroyUnitParams'},
-                                                                     'type': 'array'}},
-                                            'required': ['units'],
-                                            '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'},
-                     'ExternalControllerInfo': {'additionalProperties': False,
-                                                'properties': {'addrs': {'items': {'type': 'string'},
-                                                                         'type': 'array'},
-                                                               'ca-cert': {'type': 'string'},
-                                                               'controller-alias': {'type': 'string'},
-                                                               'controller-tag': {'type': 'string'}},
-                                                'required': ['controller-tag',
-                                                             'controller-alias',
-                                                             'addrs',
-                                                             'ca-cert'],
-                                                'type': 'object'},
-                     'LXDProfileUpgradeMessages': {'additionalProperties': False,
-                                                   'properties': {'application': {'$ref': '#/definitions/Entity'},
-                                                                  'watcher-id': {'type': 'string'}},
-                                                   'required': ['application',
-                                                                'watcher-id'],
-                                                   'type': 'object'},
-                     'LXDProfileUpgradeMessagesResult': {'additionalProperties': False,
-                                                         'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                        'message': {'type': 'string'},
-                                                                        'unit-name': {'type': 'string'}},
-                                                         'required': ['unit-name',
-                                                                      'message'],
-                                                         'type': 'object'},
-                     'LXDProfileUpgradeMessagesResults': {'additionalProperties': False,
-                                                          'properties': {'args': {'items': {'$ref': '#/definitions/LXDProfileUpgradeMessagesResult'},
-                                                                                  'type': 'array'}},
-                                                          'required': ['args'],
-                                                          'type': 'object'},
-                     'Macaroon': {'additionalProperties': False, 'type': 'object'},
-                     'NotifyWatchResult': {'additionalProperties': False,
-                                           'properties': {'NotifyWatcherId': {'type': 'string'},
-                                                          'error': {'$ref': '#/definitions/Error'}},
-                                           'required': ['NotifyWatcherId'],
-                                           'type': 'object'},
-                     'OfferUserDetails': {'additionalProperties': False,
-                                          'properties': {'access': {'type': 'string'},
-                                                         'display-name': {'type': 'string'},
-                                                         'user': {'type': 'string'}},
-                                          'required': ['user',
-                                                       'display-name',
-                                                       'access'],
-                                          'type': 'object'},
-                     'Placement': {'additionalProperties': False,
-                                   'properties': {'directive': {'type': 'string'},
-                                                  'scope': {'type': 'string'}},
-                                   'required': ['scope', 'directive'],
-                                   'type': 'object'},
-                     'RelationSuspendedArg': {'additionalProperties': False,
-                                              'properties': {'message': {'type': 'string'},
-                                                             'relation-id': {'type': 'integer'},
-                                                             'suspended': {'type': 'boolean'}},
-                                              'required': ['relation-id',
-                                                           'message',
-                                                           'suspended'],
-                                              'type': 'object'},
-                     'RelationSuspendedArgs': {'additionalProperties': False,
-                                               'properties': {'args': {'items': {'$ref': '#/definitions/RelationSuspendedArg'},
-                                                                       'type': 'array'}},
-                                               'required': ['args'],
-                                               'type': 'object'},
-                     'RemoteEndpoint': {'additionalProperties': False,
-                                        'properties': {'interface': {'type': 'string'},
-                                                       'limit': {'type': 'integer'},
-                                                       'name': {'type': 'string'},
-                                                       'role': {'type': 'string'}},
-                                        'required': ['name',
-                                                     'role',
-                                                     'interface',
-                                                     'limit'],
-                                        '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'},
-                     'ScaleApplicationInfo': {'additionalProperties': False,
-                                              'properties': {'num-units': {'type': 'integer'}},
-                                              'required': ['num-units'],
-                                              'type': 'object'},
-                     'ScaleApplicationParams': {'additionalProperties': False,
-                                                'properties': {'application-tag': {'type': 'string'},
-                                                               'scale': {'type': 'integer'},
-                                                               'scale-change': {'type': 'integer'}},
-                                                'required': ['application-tag',
-                                                             'scale'],
-                                                'type': 'object'},
-                     'ScaleApplicationResult': {'additionalProperties': False,
-                                                'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                               'info': {'$ref': '#/definitions/ScaleApplicationInfo'}},
-                                                'type': 'object'},
-                     'ScaleApplicationResults': {'additionalProperties': False,
-                                                 'properties': {'results': {'items': {'$ref': '#/definitions/ScaleApplicationResult'},
-                                                                            'type': 'array'}},
-                                                 'type': 'object'},
-                     'ScaleApplicationsParams': {'additionalProperties': False,
-                                                 'properties': {'applications': {'items': {'$ref': '#/definitions/ScaleApplicationParams'},
-                                                                                 'type': 'array'}},
-                                                 'required': ['applications'],
-                                                 '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'},
-                     'UnitsResolved': {'additionalProperties': False,
-                                       'properties': {'all': {'type': 'boolean'},
-                                                      'retry': {'type': 'boolean'},
-                                                      'tags': {'$ref': '#/definitions/Entities'}},
-                                       'type': 'object'},
-                     'UpdateSeriesArg': {'additionalProperties': False,
-                                         'properties': {'force': {'type': 'boolean'},
-                                                        'series': {'type': 'string'},
-                                                        'tag': {'$ref': '#/definitions/Entity'}},
-                                         'required': ['tag', 'force', 'series'],
-                                         'type': 'object'},
-                     'UpdateSeriesArgs': {'additionalProperties': False,
-                                          'properties': {'args': {'items': {'$ref': '#/definitions/UpdateSeriesArg'},
-                                                                  'type': 'array'}},
-                                          'required': ['args'],
-                                          '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'},
-                                              'zones': {'items': {'type': 'string'},
-                                                        'type': 'array'}},
-                               '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'},
-                    'CharmConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                   'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
-                                    '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/DestroyApplicationsParams'},
-                                                          'Result': {'$ref': '#/definitions/DestroyApplicationResults'}},
-                                           'type': 'object'},
-                    'DestroyConsumedApplications': {'properties': {'Params': {'$ref': '#/definitions/DestroyConsumedApplicationsParams'},
-                                                                   'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                    'type': 'object'},
-                    'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}},
-                                        'type': 'object'},
-                    'DestroyUnit': {'properties': {'Params': {'$ref': '#/definitions/DestroyUnitsParams'},
-                                                   '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'},
-                    'GetConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                 'Result': {'$ref': '#/definitions/ApplicationGetConfigResults'}},
-                                  'type': 'object'},
-                    'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                      'Result': {'$ref': '#/definitions/ApplicationGetConstraintsResults'}},
-                                       'type': 'object'},
-                    'GetLXDProfileUpgradeMessages': {'properties': {'Params': {'$ref': '#/definitions/LXDProfileUpgradeMessages'},
-                                                                    'Result': {'$ref': '#/definitions/LXDProfileUpgradeMessagesResults'}},
-                                                     'type': 'object'},
-                    'ResolveUnitErrors': {'properties': {'Params': {'$ref': '#/definitions/UnitsResolved'},
-                                                         'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                          'type': 'object'},
-                    'ScaleApplications': {'properties': {'Params': {'$ref': '#/definitions/ScaleApplicationsParams'},
-                                                         'Result': {'$ref': '#/definitions/ScaleApplicationResults'}},
-                                          'type': 'object'},
-                    'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}},
-                            'type': 'object'},
-                    'SetApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/ApplicationConfigSetArgs'},
-                                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                              'type': 'object'},
-                    'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}},
-                                 'type': 'object'},
-                    'SetCharmProfile': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharmProfile'}},
-                                        'type': 'object'},
-                    'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}},
-                                       'type': 'object'},
-                    'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'},
-                                                            'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                             'type': 'object'},
-                    'SetRelationsSuspended': {'properties': {'Params': {'$ref': '#/definitions/RelationSuspendedArgs'},
-                                                             'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                              'type': 'object'},
-                    'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}},
-                                 'type': 'object'},
-                    'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}},
-                              'type': 'object'},
-                    'UnsetApplicationsConfig': {'properties': {'Params': {'$ref': '#/definitions/ApplicationConfigUnsetArgs'},
-                                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                'type': 'object'},
-                    'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}},
-                               'type': 'object'},
-                    'UpdateApplicationSeries': {'properties': {'Params': {'$ref': '#/definitions/UpdateSeriesArgs'},
-                                                               'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                                'type': 'object'},
-                    'WatchLXDProfileUpgradeNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entity'},
-                                                                           'Result': {'$ref': '#/definitions/NotifyWatchResult'}},
-                                                            'type': 'object'}},
-     'type': 'object'}
-    
-
-    @ReturnMapping(AddRelationResults)
-    async def AddRelation(self, endpoints):
-        '''
-        endpoints : typing.Sequence[str]
-        Returns -> typing.Mapping[str, ~CharmRelation]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='AddRelation',
-                   version=8,
-                   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[~Placement]
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='AddUnits',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        _params['num-units'] = num_units
-        _params['placement'] = placement
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationGetConfigResults)
-    async def CharmConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='CharmConfig',
-                   version=8,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationCharmRelationsResults)
-    async def CharmRelations(self, application):
-        '''
-        application : str
-        Returns -> typing.Sequence[str]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='CharmRelations',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Consume(self, args):
-        '''
-        args : typing.Sequence[~ConsumeApplicationArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Consume',
-                   version=8,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Deploy(self, applications):
-        '''
-        applications : typing.Sequence[~ApplicationDeploy]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Deploy',
-                   version=8,
-                   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=8,
-                   params=_params)
-        _params['application'] = application
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DestroyApplicationResults)
-    async def DestroyApplication(self, applications):
-        '''
-        applications : typing.Sequence[~DestroyApplicationParams]
-        Returns -> typing.Sequence[~DestroyApplicationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='DestroyApplication',
-                   version=8,
-                   params=_params)
-        _params['applications'] = applications
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyConsumedApplications(self, applications):
-        '''
-        applications : typing.Sequence[~DestroyConsumedApplicationParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='DestroyConsumedApplications',
-                   version=8,
-                   params=_params)
-        _params['applications'] = applications
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyRelation(self, endpoints):
-        '''
-        endpoints : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='DestroyRelation',
-                   version=8,
-                   params=_params)
-        _params['endpoints'] = endpoints
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(DestroyUnitResults)
-    async def DestroyUnit(self, units):
-        '''
-        units : typing.Sequence[~DestroyUnitParams]
-        Returns -> typing.Sequence[~DestroyUnitResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='DestroyUnit',
-                   version=8,
-                   params=_params)
-        _params['units'] = units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def DestroyUnits(self, unit_names):
-        '''
-        unit_names : typing.Sequence[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='DestroyUnits',
-                   version=8,
-                   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=8,
-                   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[str, typing.Any], _ForwardRef('Value')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Get',
-                   version=8,
-                   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=8,
-                   params=_params)
-        _params['application'] = application
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationGetConfigResults)
-    async def GetConfig(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='GetConfig',
-                   version=8,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationGetConstraintsResults)
-    async def GetConstraints(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ApplicationConstraint]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='GetConstraints',
-                   version=8,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LXDProfileUpgradeMessagesResults)
-    async def GetLXDProfileUpgradeMessages(self, application, watcher_id):
-        '''
-        application : Entity
-        watcher_id : str
-        Returns -> typing.Sequence[~LXDProfileUpgradeMessagesResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='GetLXDProfileUpgradeMessages',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        _params['watcher-id'] = watcher_id
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ResolveUnitErrors(self, all_, retry, tags):
-        '''
-        all_ : bool
-        retry : bool
-        tags : Entities
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='ResolveUnitErrors',
-                   version=8,
-                   params=_params)
-        _params['all'] = all_
-        _params['retry'] = retry
-        _params['tags'] = tags
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ScaleApplicationResults)
-    async def ScaleApplications(self, applications):
-        '''
-        applications : typing.Sequence[~ScaleApplicationParams]
-        Returns -> typing.Sequence[~ScaleApplicationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='ScaleApplications',
-                   version=8,
-                   params=_params)
-        _params['applications'] = applications
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(None)
-    async def Set(self, application, options):
-        '''
-        application : str
-        options : typing.Mapping[str, str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Set',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        _params['options'] = options
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetApplicationsConfig(self, args):
-        '''
-        args : typing.Sequence[~ApplicationConfigSet]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='SetApplicationsConfig',
-                   version=8,
-                   params=_params)
-        _params['Args'] = args
-        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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~StorageConstraints]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='SetCharm',
-                   version=8,
-                   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 SetCharmProfile(self, application, charm_url):
-        '''
-        application : str
-        charm_url : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='SetCharmProfile',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        _params['charm-url'] = charm_url
-        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=8,
-                   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[~ApplicationMetricCredential]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='SetMetricCredentials',
-                   version=8,
-                   params=_params)
-        _params['creds'] = creds
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetRelationsSuspended(self, args):
-        '''
-        args : typing.Sequence[~RelationSuspendedArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='SetRelationsSuspended',
-                   version=8,
-                   params=_params)
-        _params['args'] = args
-        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=8,
-                   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[str]
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Unset',
-                   version=8,
-                   params=_params)
-        _params['application'] = application
-        _params['options'] = options
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UnsetApplicationsConfig(self, args):
-        '''
-        args : typing.Sequence[~ApplicationUnset]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='UnsetApplicationsConfig',
-                   version=8,
-                   params=_params)
-        _params['Args'] = args
-        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[str, str]
-        settings_yaml : str
-        Returns -> None
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='Update',
-                   version=8,
-                   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
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateApplicationSeries(self, args):
-        '''
-        args : typing.Sequence[~UpdateSeriesArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='UpdateApplicationSeries',
-                   version=8,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResult)
-    async def WatchLXDProfileUpgradeNotifications(self, tag):
-        '''
-        tag : str
-        Returns -> typing.Union[str, _ForwardRef('Error')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Application',
-                   request='WatchLXDProfileUpgradeNotifications',
-                   version=8,
-                   params=_params)
-        _params['tag'] = tag
-        reply = await self.rpc(msg)
-        return reply
-
-
diff --git a/modules/libjuju/juju/client/_client9.py b/modules/libjuju/juju/client/_client9.py
deleted file mode 100644
index d87dd8f..0000000
--- a/modules/libjuju/juju/client/_client9.py
+++ /dev/null
@@ -1,2385 +0,0 @@
-# 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 UniterFacade(Type):
-    name = 'Uniter'
-    version = 9
-    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'},
-                     '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'},
-                     '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': {'cacertificates': {'items': {'type': 'string'},
-                                                                     'type': 'array'},
-                                                  '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'},
-                     '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'},
-                     'EntityString': {'additionalProperties': False,
-                                      'properties': {'tag': {'type': 'string'},
-                                                     'value': {'type': 'string'}},
-                                      'required': ['tag', 'value'],
-                                      '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'},
-                     'GoalState': {'additionalProperties': False,
-                                   'properties': {'relations': {'patternProperties': {'.*': {'patternProperties': {'.*': {'$ref': '#/definitions/GoalStateStatus'}},
-                                                                                             'type': 'object'}},
-                                                                'type': 'object'},
-                                                  'units': {'patternProperties': {'.*': {'$ref': '#/definitions/GoalStateStatus'}},
-                                                            'type': 'object'}},
-                                   'required': ['units', 'relations'],
-                                   'type': 'object'},
-                     'GoalStateResult': {'additionalProperties': False,
-                                         'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                        'result': {'$ref': '#/definitions/GoalState'}},
-                                         'required': ['result', 'error'],
-                                         'type': 'object'},
-                     'GoalStateResults': {'additionalProperties': False,
-                                          'properties': {'results': {'items': {'$ref': '#/definitions/GoalStateResult'},
-                                                                     'type': 'array'}},
-                                          'required': ['results'],
-                                          'type': 'object'},
-                     'GoalStateStatus': {'additionalProperties': False,
-                                         'properties': {'since': {'format': 'date-time',
-                                                                  'type': 'string'},
-                                                        'status': {'type': 'string'}},
-                                         'required': ['status', 'since'],
-                                         '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'},
-                                                         'hostname': {'type': 'string'},
-                                                         'value': {'type': 'string'}},
-                                          'required': ['hostname', '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'},
-                                                                     'unit-tag': {'type': 'string'}},
-                                                      'required': ['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'},
-                                               'labels': {'patternProperties': {'.*': {'type': 'string'}},
-                                                          'type': 'object'},
-                                               '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'},
-                                                    'type': {'type': 'string'},
-                                                    'uuid': {'type': 'string'}},
-                                     'required': ['name', 'uuid', 'type'],
-                                     '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'},
-                                                          'relation-id': {'type': 'integer'},
-                                                          'unit': {'type': 'string'}},
-                                           'required': ['unit', 'bindings'],
-                                           'type': 'object'},
-                     'NetworkInfoResult': {'additionalProperties': False,
-                                           'properties': {'bind-addresses': {'items': {'$ref': '#/definitions/NetworkInfo'},
-                                                                             'type': 'array'},
-                                                          'egress-subnets': {'items': {'type': 'string'},
-                                                                             'type': 'array'},
-                                                          'error': {'$ref': '#/definitions/Error'},
-                                                          'ingress-addresses': {'items': {'type': 'string'},
-                                                                                'type': 'array'}},
-                                           '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': {'bool': {'type': 'boolean'},
-                                                       'endpoint': {'$ref': '#/definitions/Endpoint'},
-                                                       'error': {'$ref': '#/definitions/Error'},
-                                                       'id': {'type': 'integer'},
-                                                       'key': {'type': 'string'},
-                                                       'life': {'type': 'string'},
-                                                       'other-application': {'type': 'string'}},
-                                        'required': ['life',
-                                                     'id',
-                                                     'key',
-                                                     'endpoint'],
-                                        'type': 'object'},
-                     'RelationResults': {'additionalProperties': False,
-                                         'properties': {'results': {'items': {'$ref': '#/definitions/RelationResult'},
-                                                                    'type': 'array'}},
-                                         'required': ['results'],
-                                         'type': 'object'},
-                     'RelationStatusArg': {'additionalProperties': False,
-                                           'properties': {'message': {'type': 'string'},
-                                                          'relation-id': {'type': 'integer'},
-                                                          'status': {'type': 'string'},
-                                                          'unit-tag': {'type': 'string'}},
-                                           'required': ['unit-tag',
-                                                        'relation-id',
-                                                        'status',
-                                                        'message'],
-                                           'type': 'object'},
-                     'RelationStatusArgs': {'additionalProperties': False,
-                                            'properties': {'args': {'items': {'$ref': '#/definitions/RelationStatusArg'},
-                                                                    'type': 'array'}},
-                                            'required': ['args'],
-                                            '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'},
-                     'RelationUnitStatus': {'additionalProperties': False,
-                                            'properties': {'in-scope': {'type': 'boolean'},
-                                                           'relation-tag': {'type': 'string'},
-                                                           'suspended': {'type': 'boolean'}},
-                                            'required': ['relation-tag',
-                                                         'in-scope',
-                                                         'suspended'],
-                                            'type': 'object'},
-                     'RelationUnitStatusResult': {'additionalProperties': False,
-                                                  'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                 'results': {'items': {'$ref': '#/definitions/RelationUnitStatus'},
-                                                                             'type': 'array'}},
-                                                  'required': ['results'],
-                                                  'type': 'object'},
-                     'RelationUnitStatusResults': {'additionalProperties': False,
-                                                   'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitStatusResult'},
-                                                                              'type': 'array'}},
-                                                   'required': ['results'],
-                                                   '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'},
-                     'SetPodSpecParams': {'additionalProperties': False,
-                                          'properties': {'specs': {'items': {'$ref': '#/definitions/EntityString'},
-                                                                   'type': 'array'}},
-                                          'required': ['specs'],
-                                          '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'},
-                     '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'},
-                     'UnitRefreshResult': {'additionalProperties': False,
-                                           'properties': {'Error': {'$ref': '#/definitions/Error'},
-                                                          'Life': {'type': 'string'},
-                                                          'Resolved': {'type': 'string'}},
-                                           'required': ['Life',
-                                                        'Resolved',
-                                                        'Error'],
-                                           'type': 'object'},
-                     'UnitRefreshResults': {'additionalProperties': False,
-                                            'properties': {'Results': {'items': {'$ref': '#/definitions/UnitRefreshResult'},
-                                                                       'type': 'array'}},
-                                            'required': ['Results'],
-                                            'type': 'object'},
-                     'UnitSettings': {'additionalProperties': False,
-                                      'properties': {'version': {'type': 'integer'}},
-                                      'required': ['version'],
-                                      'type': 'object'},
-                     'UpgradeSeriesStatusParam': {'additionalProperties': False,
-                                                  'properties': {'entity': {'$ref': '#/definitions/Entity'},
-                                                                 'message': {'type': 'string'},
-                                                                 'status': {'type': 'string'}},
-                                                  'required': ['entity',
-                                                               'status',
-                                                               'message'],
-                                                  'type': 'object'},
-                     'UpgradeSeriesStatusParams': {'additionalProperties': False,
-                                                   'properties': {'params': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusParam'},
-                                                                             'type': 'array'}},
-                                                   'required': ['params'],
-                                                   'type': 'object'},
-                     'UpgradeSeriesStatusResult': {'additionalProperties': False,
-                                                   'properties': {'error': {'$ref': '#/definitions/Error'},
-                                                                  'status': {'type': 'string'}},
-                                                   'type': 'object'},
-                     'UpgradeSeriesStatusResults': {'additionalProperties': False,
-                                                    'properties': {'results': {'items': {'$ref': '#/definitions/UpgradeSeriesStatusResult'},
-                                                                               'type': 'array'}},
-                                                    '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'},
-                    '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'},
-                    'CloudSpec': {'properties': {'Result': {'$ref': '#/definitions/CloudSpecResult'}},
-                                  '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'},
-                    'GoalStates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                  'Result': {'$ref': '#/definitions/GoalStateResults'}},
-                                   'type': 'object'},
-                    'HasSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/BoolResults'}},
-                                        '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'},
-                    'Refresh': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                               'Result': {'$ref': '#/definitions/UnitRefreshResults'}},
-                                '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'},
-                    'RelationsStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                       'Result': {'$ref': '#/definitions/RelationUnitStatusResults'}},
-                                        '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'},
-                    'SetPodSpec': {'properties': {'Params': {'$ref': '#/definitions/SetPodSpecParams'},
-                                                  'Result': {'$ref': '#/definitions/ErrorResults'}},
-                                   'type': 'object'},
-                    'SetRelationStatus': {'properties': {'Params': {'$ref': '#/definitions/RelationStatusArgs'},
-                                                         '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'},
-                    'SetUpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/UpgradeSeriesStatusParams'},
-                                                                  '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'},
-                    'UpgradeSeriesUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/UpgradeSeriesStatusResults'}},
-                                                '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'},
-                    'WatchConfigSettingsHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                               'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                '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'},
-                    'WatchTrustConfigSettingsHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                    'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                                     'type': 'object'},
-                    'WatchUnitAddressesHash': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                              'Result': {'$ref': '#/definitions/StringsWatchResults'}},
-                                               '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'},
-                    'WatchUpgradeSeriesNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'},
-                                                                       'Result': {'$ref': '#/definitions/NotifyWatchResults'}},
-                                                        '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[str]]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='APIAddresses',
-                   version=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(APIHostPortsResult)
-    async def APIHostPorts(self):
-        '''
-
-        Returns -> typing.Sequence[~HostPort]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='APIHostPorts',
-                   version=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ActionResults)
-    async def Actions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ActionResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Actions',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def AddMetricBatches(self, batches):
-        '''
-        batches : typing.Sequence[~MetricBatchParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='AddMetricBatches',
-                   version=9,
-                   params=_params)
-        _params['batches'] = batches
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def AddUnitStorage(self, storages):
-        '''
-        storages : typing.Sequence[~StorageAddParams]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='AddUnitStorage',
-                   version=9,
-                   params=_params)
-        _params['storages'] = storages
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MachinePortsResults)
-    async def AllMachinePorts(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MachinePortsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='AllMachinePorts',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ApplicationStatusResults)
-    async def ApplicationStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ApplicationStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ApplicationStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def AssignedMachine(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='AssignedMachine',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def AvailabilityZone(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='AvailabilityZone',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def BeginActions(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='BeginActions',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def CharmArchiveSha256(self, urls):
-        '''
-        urls : typing.Sequence[~CharmURL]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='CharmArchiveSha256',
-                   version=9,
-                   params=_params)
-        _params['urls'] = urls
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(IntResults)
-    async def CharmModifiedVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~IntResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='CharmModifiedVersion',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringBoolResults)
-    async def CharmURL(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringBoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='CharmURL',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ClearResolved(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ClearResolved',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def ClosePorts(self, entities):
-        '''
-        entities : typing.Sequence[~EntityPortRange]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ClosePorts',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(CloudSpecResult)
-    async def CloudSpec(self):
-        '''
-
-        Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='CloudSpec',
-                   version=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ConfigSettingsResults)
-    async def ConfigSettings(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ConfigSettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ConfigSettings',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Destroy(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Destroy',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyAllSubordinates(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='DestroyAllSubordinates',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def DestroyUnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='DestroyUnitStorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnsureDead(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='EnsureDead',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def EnterScope(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='EnterScope',
-                   version=9,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def FinishActions(self, results):
-        '''
-        results : typing.Sequence[~ActionExecutionResult]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='FinishActions',
-                   version=9,
-                   params=_params)
-        _params['results'] = results
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(MeterStatusResults)
-    async def GetMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~MeterStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='GetMeterStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringBoolResults)
-    async def GetPrincipal(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringBoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='GetPrincipal',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GoalStateResults)
-    async def GoalStates(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~GoalStateResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='GoalStates',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(BoolResults)
-    async def HasSubordinates(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~BoolResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='HasSubordinates',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def LeaveScope(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='LeaveScope',
-                   version=9,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def Life(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Life',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def Merge(self, params):
-        '''
-        params : typing.Sequence[~MergeLeadershipSettingsParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Merge',
-                   version=9,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ModelConfigResult)
-    async def ModelConfig(self):
-        '''
-
-        Returns -> typing.Mapping[str, typing.Any]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ModelConfig',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NetworkInfoResults)
-    async def NetworkInfo(self, bindings, unit):
-        '''
-        bindings : typing.Sequence[str]
-        unit : str
-        Returns -> typing.Mapping[str, ~NetworkInfoResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='NetworkInfo',
-                   version=9,
-                   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[~EntityPortRange]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='OpenPorts',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def PrivateAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='PrivateAddress',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def PublicAddress(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='PublicAddress',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(GetLeadershipSettingsBulkResults)
-    async def Read(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~GetLeadershipSettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Read',
-                   version=9,
-                   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[~RelationUnitPair]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ReadRemoteSettings',
-                   version=9,
-                   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[~RelationUnit]
-        Returns -> typing.Sequence[~SettingsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='ReadSettings',
-                   version=9,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UnitRefreshResults)
-    async def Refresh(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~UnitRefreshResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Refresh',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationResults)
-    async def Relation(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~RelationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Relation',
-                   version=9,
-                   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[int]
-        Returns -> typing.Sequence[~RelationResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='RelationById',
-                   version=9,
-                   params=_params)
-        _params['relation-ids'] = relation_ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationUnitStatusResults)
-    async def RelationsStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~RelationUnitStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='RelationsStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RemoveStorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='RemoveStorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def RequestReboot(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='RequestReboot',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ResolvedModeResults)
-    async def Resolved(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~ResolvedModeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Resolved',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetAgentStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetAgentStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetApplicationStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetApplicationStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetCharmURL(self, entities):
-        '''
-        entities : typing.Sequence[~EntityCharmURL]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetCharmURL',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetPodSpec(self, specs):
-        '''
-        specs : typing.Sequence[~EntityString]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetPodSpec',
-                   version=9,
-                   params=_params)
-        _params['specs'] = specs
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetRelationStatus(self, args):
-        '''
-        args : typing.Sequence[~RelationStatusArg]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetRelationStatus',
-                   version=9,
-                   params=_params)
-        _params['args'] = args
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetUnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~EntityStatusArgs]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetUnitStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetUpgradeSeriesUnitStatus(self, params):
-        '''
-        params : typing.Sequence[~UpgradeSeriesStatusParam]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetUpgradeSeriesUnitStatus',
-                   version=9,
-                   params=_params)
-        _params['params'] = params
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def SetWorkloadVersion(self, entities):
-        '''
-        entities : typing.Sequence[~EntityWorkloadVersion]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='SetWorkloadVersion',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(LifeResults)
-    async def StorageAttachmentLife(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~LifeResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='StorageAttachmentLife',
-                   version=9,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageAttachmentResults)
-    async def StorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~StorageAttachmentResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='StorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StatusResults)
-    async def UnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='UnitStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StorageAttachmentIdsResults)
-    async def UnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StorageAttachmentIdsResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='UnitStorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(ErrorResults)
-    async def UpdateSettings(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnitSettings]
-        Returns -> typing.Sequence[~ErrorResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='UpdateSettings',
-                   version=9,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(UpgradeSeriesStatusResults)
-    async def UpgradeSeriesUnitStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~UpgradeSeriesStatusResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='UpgradeSeriesUnitStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def Watch(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='Watch',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchActionNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchActionNotifications',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchConfigSettingsHash(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchConfigSettingsHash',
-                   version=9,
-                   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=9,
-                   params=_params)
-
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchLeadershipSettings(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchLeadershipSettings',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchMeterStatus(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchMeterStatus',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(RelationUnitsWatchResults)
-    async def WatchRelationUnits(self, relation_units):
-        '''
-        relation_units : typing.Sequence[~RelationUnit]
-        Returns -> typing.Sequence[~RelationUnitsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchRelationUnits',
-                   version=9,
-                   params=_params)
-        _params['relation-units'] = relation_units
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchStorageAttachments(self, ids):
-        '''
-        ids : typing.Sequence[~StorageAttachmentId]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchStorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['ids'] = ids
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchTrustConfigSettingsHash(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchTrustConfigSettingsHash',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnitAddressesHash(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchUnitAddressesHash',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnitRelations(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchUnitRelations',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringsWatchResults)
-    async def WatchUnitStorageAttachments(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringsWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchUnitStorageAttachments',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(NotifyWatchResults)
-    async def WatchUpgradeSeriesNotifications(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~NotifyWatchResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WatchUpgradeSeriesNotifications',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
-    @ReturnMapping(StringResults)
-    async def WorkloadVersion(self, entities):
-        '''
-        entities : typing.Sequence[~Entity]
-        Returns -> typing.Sequence[~StringResult]
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter',
-                   request='WorkloadVersion',
-                   version=9,
-                   params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
diff --git a/modules/libjuju/juju/client/_definitions.py b/modules/libjuju/juju/client/_definitions.py
deleted file mode 100644
index 2d25e39..0000000
--- a/modules/libjuju/juju/client/_definitions.py
+++ /dev/null
@@ -1,11058 +0,0 @@
-# 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 ReturnMapping, Type
-
-
-class APIHostPortsResult(Type):
-    _toSchema = {'servers': 'servers'}
-    _toPy = {'servers': 'servers'}
-    def __init__(self, servers=None, **unknown_fields):
-        '''
-        servers : typing.Sequence[~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[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[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[~ActionExecutionResult]
-        '''
-        self.results = [ActionExecutionResult.from_json(o) for o in results or []]
-
-
-
-class ActionPruneArgs(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 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[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[~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[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[~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[~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[~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[~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[~ActionsByReceiver]
-        '''
-        self.actions = [ActionsByReceiver.from_json(o) for o in actions or []]
-
-
-
-class AddApplicationOffer(Type):
-    _toSchema = {'application_description': 'application-description', 'application_name': 'application-name', 'endpoints': 'endpoints', 'model_tag': 'model-tag', 'offer_name': 'offer-name'}
-    _toPy = {'application-description': 'application_description', 'application-name': 'application_name', 'endpoints': 'endpoints', 'model-tag': 'model_tag', 'offer-name': 'offer_name'}
-    def __init__(self, application_description=None, application_name=None, endpoints=None, model_tag=None, offer_name=None, **unknown_fields):
-        '''
-        application_description : str
-        application_name : str
-        endpoints : typing.Mapping[str, str]
-        model_tag : str
-        offer_name : str
-        '''
-        self.application_description = application_description
-        self.application_name = application_name
-        self.endpoints = endpoints
-        self.model_tag = model_tag
-        self.offer_name = offer_name
-
-
-
-class AddApplicationOffers(Type):
-    _toSchema = {'offers': 'Offers'}
-    _toPy = {'Offers': 'offers'}
-    def __init__(self, offers=None, **unknown_fields):
-        '''
-        offers : typing.Sequence[~AddApplicationOffer]
-        '''
-        self.offers = [AddApplicationOffer.from_json(o) for o in offers 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[~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[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 AddCloudArgs(Type):
-    _toSchema = {'cloud': 'cloud', 'name': 'name'}
-    _toPy = {'cloud': 'cloud', 'name': 'name'}
-    def __init__(self, cloud=None, name=None, **unknown_fields):
-        '''
-        cloud : Cloud
-        name : str
-        '''
-        self.cloud = Cloud.from_json(cloud) if cloud else None
-        self.name = name
-
-
-
-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[~Address]
-        constraints : Value
-        container_type : str
-        disks : typing.Sequence[~Constraints]
-        hardware_characteristics : HardwareCharacteristics
-        instance_id : str
-        jobs : typing.Sequence[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[~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[~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[~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[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[str]
-        '''
-        self.endpoints = endpoints
-
-
-
-class AddRelationResults(Type):
-    _toSchema = {'endpoints': 'endpoints'}
-    _toPy = {'endpoints': 'endpoints'}
-    def __init__(self, endpoints=None, **unknown_fields):
-        '''
-        endpoints : typing.Mapping[str, ~CharmRelation]
-        '''
-        self.endpoints = endpoints
-
-
-
-class AddStorageDetails(Type):
-    _toSchema = {'storage_tags': 'storage-tags'}
-    _toPy = {'storage-tags': 'storage_tags'}
-    def __init__(self, storage_tags=None, **unknown_fields):
-        '''
-        storage_tags : typing.Sequence[str]
-        '''
-        self.storage_tags = storage_tags
-
-
-
-class AddStorageResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : AddStorageDetails
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = AddStorageDetails.from_json(result) if result else None
-
-
-
-class AddStorageResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~AddStorageResult]
-        '''
-        self.results = [AddStorageResult.from_json(o) for o in results or []]
-
-
-
-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[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[~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[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[~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[~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[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[~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[~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[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[~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[~EntityAnnotations]
-        '''
-        self.annotations = [EntityAnnotations.from_json(o) for o in annotations or []]
-
-
-
-class ApplicationCharm(Type):
-    _toSchema = {'charm_modified_version': 'charm-modified-version', 'force_upgrade': 'force-upgrade', 'sha256': 'sha256', 'url': 'url'}
-    _toPy = {'charm-modified-version': 'charm_modified_version', 'force-upgrade': 'force_upgrade', 'sha256': 'sha256', 'url': 'url'}
-    def __init__(self, charm_modified_version=None, force_upgrade=None, sha256=None, url=None, **unknown_fields):
-        '''
-        charm_modified_version : int
-        force_upgrade : bool
-        sha256 : str
-        url : str
-        '''
-        self.charm_modified_version = charm_modified_version
-        self.force_upgrade = force_upgrade
-        self.sha256 = sha256
-        self.url = url
-
-
-
-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[str, ~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[str]
-        '''
-        self.charm_relations = charm_relations
-
-
-
-class ApplicationCharmResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ApplicationCharm
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ApplicationCharm.from_json(result) if result else None
-
-
-
-class ApplicationCharmResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ApplicationCharmResult]
-        '''
-        self.results = [ApplicationCharmResult.from_json(o) for o in results or []]
-
-
-
-class ApplicationConfigSet(Type):
-    _toSchema = {'application': 'application', 'config': 'config'}
-    _toPy = {'application': 'application', 'config': 'config'}
-    def __init__(self, application=None, config=None, **unknown_fields):
-        '''
-        application : str
-        config : typing.Mapping[str, str]
-        '''
-        self.application = application
-        self.config = config
-
-
-
-class ApplicationConfigSetArgs(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~ApplicationConfigSet]
-        '''
-        self.args = [ApplicationConfigSet.from_json(o) for o in args or []]
-
-
-
-class ApplicationConfigUnsetArgs(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~ApplicationUnset]
-        '''
-        self.args = [ApplicationUnset.from_json(o) for o in args or []]
-
-
-
-class ApplicationConstraint(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 ApplicationDeploy(Type):
-    _toSchema = {'application': 'application', 'attach_storage': 'attach-storage', 'channel': 'channel', 'charm_url': 'charm-url', 'config': 'config', 'config_yaml': 'config-yaml', 'constraints': 'constraints', 'devices': 'devices', 'endpoint_bindings': 'endpoint-bindings', 'num_units': 'num-units', 'placement': 'placement', 'policy': 'policy', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
-    _toPy = {'application': 'application', 'attach-storage': 'attach_storage', 'channel': 'channel', 'charm-url': 'charm_url', 'config': 'config', 'config-yaml': 'config_yaml', 'constraints': 'constraints', 'devices': 'devices', 'endpoint-bindings': 'endpoint_bindings', 'num-units': 'num_units', 'placement': 'placement', 'policy': 'policy', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
-    def __init__(self, application=None, attach_storage=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, devices=None, endpoint_bindings=None, num_units=None, placement=None, policy=None, resources=None, series=None, storage=None, **unknown_fields):
-        '''
-        application : str
-        attach_storage : typing.Sequence[str]
-        channel : str
-        charm_url : str
-        config : typing.Mapping[str, str]
-        config_yaml : str
-        constraints : Value
-        devices : typing.Mapping[str, ~Constraints]
-        endpoint_bindings : typing.Mapping[str, str]
-        num_units : int
-        placement : typing.Sequence[~Placement]
-        policy : str
-        resources : typing.Mapping[str, str]
-        series : str
-        storage : typing.Mapping[str, ~Constraints]
-        '''
-        self.application = application
-        self.attach_storage = attach_storage
-        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.devices = devices
-        self.endpoint_bindings = endpoint_bindings
-        self.num_units = num_units
-        self.placement = [Placement.from_json(o) for o in placement or []]
-        self.policy = policy
-        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 ApplicationGetConfigResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ConfigResult]
-        '''
-        self.results = [ConfigResult.from_json(o) for o in results or []]
-
-
-
-class ApplicationGetConstraintsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ApplicationConstraint]
-        '''
-        self.results = [ApplicationConstraint.from_json(o) for o in results or []]
-
-
-
-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[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[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[~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[str, str]
-        endpoints : typing.Sequence[~RemoteEndpoint]
-        offer_name : str
-        offer_url : str
-        source_model_tag : str
-        spaces : typing.Sequence[~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 ApplicationOfferAdminDetails(Type):
-    _toSchema = {'application_name': 'application-name', 'applicationofferdetails': 'ApplicationOfferDetails', 'charm_url': 'charm-url', 'connections': 'connections'}
-    _toPy = {'ApplicationOfferDetails': 'applicationofferdetails', 'application-name': 'application_name', 'charm-url': 'charm_url', 'connections': 'connections'}
-    def __init__(self, applicationofferdetails=None, application_name=None, charm_url=None, connections=None, **unknown_fields):
-        '''
-        applicationofferdetails : ApplicationOfferDetails
-        application_name : str
-        charm_url : str
-        connections : typing.Sequence[~OfferConnection]
-        '''
-        self.applicationofferdetails = ApplicationOfferDetails.from_json(applicationofferdetails) if applicationofferdetails else None
-        self.application_name = application_name
-        self.charm_url = charm_url
-        self.connections = [OfferConnection.from_json(o) for o in connections or []]
-
-
-
-class ApplicationOfferDetails(Type):
-    _toSchema = {'application_description': 'application-description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer_name': 'offer-name', 'offer_url': 'offer-url', 'offer_uuid': 'offer-uuid', 'source_model_tag': 'source-model-tag', 'spaces': 'spaces', 'users': 'users'}
-    _toPy = {'application-description': 'application_description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer-name': 'offer_name', 'offer-url': 'offer_url', 'offer-uuid': 'offer_uuid', 'source-model-tag': 'source_model_tag', 'spaces': 'spaces', 'users': 'users'}
-    def __init__(self, application_description=None, bindings=None, endpoints=None, offer_name=None, offer_url=None, offer_uuid=None, source_model_tag=None, spaces=None, users=None, **unknown_fields):
-        '''
-        application_description : str
-        bindings : typing.Mapping[str, str]
-        endpoints : typing.Sequence[~RemoteEndpoint]
-        offer_name : str
-        offer_url : str
-        offer_uuid : str
-        source_model_tag : str
-        spaces : typing.Sequence[~RemoteSpace]
-        users : typing.Sequence[~OfferUserDetails]
-        '''
-        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.offer_uuid = offer_uuid
-        self.source_model_tag = source_model_tag
-        self.spaces = [RemoteSpace.from_json(o) for o in spaces or []]
-        self.users = [OfferUserDetails.from_json(o) for o in users or []]
-
-
-
-class ApplicationOfferResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ApplicationOfferAdminDetails
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ApplicationOfferAdminDetails.from_json(result) if result else None
-
-
-
-class ApplicationOfferStatus(Type):
-    _toSchema = {'active_connected_count': 'active-connected-count', 'application_name': 'application-name', 'charm': 'charm', 'endpoints': 'endpoints', 'err': 'err', 'offer_name': 'offer-name', 'total_connected_count': 'total-connected-count'}
-    _toPy = {'active-connected-count': 'active_connected_count', 'application-name': 'application_name', 'charm': 'charm', 'endpoints': 'endpoints', 'err': 'err', 'offer-name': 'offer_name', 'total-connected-count': 'total_connected_count'}
-    def __init__(self, active_connected_count=None, application_name=None, charm=None, endpoints=None, err=None, offer_name=None, total_connected_count=None, **unknown_fields):
-        '''
-        active_connected_count : int
-        application_name : str
-        charm : str
-        endpoints : typing.Mapping[str, ~RemoteEndpoint]
-        err : typing.Mapping[str, typing.Any]
-        offer_name : str
-        total_connected_count : int
-        '''
-        self.active_connected_count = active_connected_count
-        self.application_name = application_name
-        self.charm = charm
-        self.endpoints = endpoints
-        self.err = err
-        self.offer_name = offer_name
-        self.total_connected_count = total_connected_count
-
-
-
-class ApplicationOffersResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ApplicationOfferResult]
-        '''
-        self.results = [ApplicationOfferResult.from_json(o) for o in results 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[~RelationChange]
-        removed : typing.Sequence[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[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[str, str]
-        config_settings_yaml : str
-        force_series : bool
-        force_units : bool
-        resource_ids : typing.Mapping[str, str]
-        storage_constraints : typing.Mapping[str, ~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 ApplicationSetCharmProfile(Type):
-    _toSchema = {'application': 'application', 'charm_url': 'charm-url'}
-    _toPy = {'application': 'application', 'charm-url': 'charm_url'}
-    def __init__(self, application=None, charm_url=None, **unknown_fields):
-        '''
-        application : str
-        charm_url : str
-        '''
-        self.application = application
-        self.charm_url = charm_url
-
-
-
-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[str, typing.Any]
-        exposed : bool
-        life : str
-        meter_statuses : typing.Mapping[str, ~MeterStatus]
-        relations : typing.Sequence[str]
-        series : str
-        status : DetailedStatus
-        subordinate_to : typing.Sequence[str]
-        units : typing.Mapping[str, ~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[str, ~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[~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[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 ApplicationUnitParams(Type):
-    _toSchema = {'address': 'address', 'data': 'data', 'filesystem_info': 'filesystem-info', 'info': 'info', 'ports': 'ports', 'provider_id': 'provider-id', 'status': 'status', 'unit_tag': 'unit-tag'}
-    _toPy = {'address': 'address', 'data': 'data', 'filesystem-info': 'filesystem_info', 'info': 'info', 'ports': 'ports', 'provider-id': 'provider_id', 'status': 'status', 'unit-tag': 'unit_tag'}
-    def __init__(self, address=None, data=None, filesystem_info=None, info=None, ports=None, provider_id=None, status=None, unit_tag=None, **unknown_fields):
-        '''
-        address : str
-        data : typing.Mapping[str, typing.Any]
-        filesystem_info : typing.Sequence[~KubernetesFilesystemInfo]
-        info : str
-        ports : typing.Sequence[str]
-        provider_id : str
-        status : str
-        unit_tag : str
-        '''
-        self.address = address
-        self.data = data
-        self.filesystem_info = [KubernetesFilesystemInfo.from_json(o) for o in filesystem_info or []]
-        self.info = info
-        self.ports = ports
-        self.provider_id = provider_id
-        self.status = status
-        self.unit_tag = unit_tag
-
-
-
-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[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[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[~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[~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[~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[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[~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[~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[~BoolResult]
-        '''
-        self.results = [BoolResult.from_json(o) for o in results or []]
-
-
-
-class BulkImportStorageParams(Type):
-    _toSchema = {'storage': 'storage'}
-    _toPy = {'storage': 'storage'}
-    def __init__(self, storage=None, **unknown_fields):
-        '''
-        storage : typing.Sequence[~ImportStorageParams]
-        '''
-        self.storage = [ImportStorageParams.from_json(o) for o in storage 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[typing.Any]
-        id_ : str
-        method : str
-        requires : typing.Sequence[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[~BundleChange]
-        errors : typing.Sequence[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[int]
-        '''
-        self.result = result
-
-
-
-class ChangeModelCredentialParams(Type):
-    _toSchema = {'credential_tag': 'credential-tag', 'model_tag': 'model-tag'}
-    _toPy = {'credential-tag': 'credential_tag', 'model-tag': 'model_tag'}
-    def __init__(self, credential_tag=None, model_tag=None, **unknown_fields):
-        '''
-        credential_tag : str
-        model_tag : str
-        '''
-        self.credential_tag = credential_tag
-        self.model_tag = model_tag
-
-
-
-class ChangeModelCredentialsParams(Type):
-    _toSchema = {'model_credentials': 'model-credentials'}
-    _toPy = {'model-credentials': 'model_credentials'}
-    def __init__(self, model_credentials=None, **unknown_fields):
-        '''
-        model_credentials : typing.Sequence[~ChangeModelCredentialParams]
-        '''
-        self.model_credentials = [ChangeModelCredentialParams.from_json(o) for o in model_credentials or []]
-
-
-
-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[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[str, ~CharmActionSpec]
-        '''
-        self.specs = specs
-
-
-
-class CharmDevice(Type):
-    _toSchema = {'countmax': 'CountMax', 'countmin': 'CountMin', 'description': 'Description', 'name': 'Name', 'type_': 'Type'}
-    _toPy = {'CountMax': 'countmax', 'CountMin': 'countmin', 'Description': 'description', 'Name': 'name', 'Type': 'type_'}
-    def __init__(self, countmax=None, countmin=None, description=None, name=None, type_=None, **unknown_fields):
-        '''
-        countmax : int
-        countmin : int
-        description : str
-        name : str
-        type_ : str
-        '''
-        self.countmax = countmax
-        self.countmin = countmin
-        self.description = description
-        self.name = name
-        self.type_ = type_
-
-
-
-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[str, ~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 CharmLXDProfile(Type):
-    _toSchema = {'config': 'config', 'description': 'description', 'devices': 'devices'}
-    _toPy = {'config': 'config', 'description': 'description', 'devices': 'devices'}
-    def __init__(self, config=None, description=None, devices=None, **unknown_fields):
-        '''
-        config : typing.Mapping[str, str]
-        description : str
-        devices : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-        self.description = description
-        self.devices = devices
-
-
-
-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[str]
-        description : str
-        extra_bindings : typing.Mapping[str, str]
-        min_juju_version : str
-        name : str
-        payload_classes : typing.Mapping[str, ~CharmPayloadClass]
-        peers : typing.Mapping[str, ~CharmRelation]
-        provides : typing.Mapping[str, ~CharmRelation]
-        requires : typing.Mapping[str, ~CharmRelation]
-        resources : typing.Mapping[str, ~CharmResourceMeta]
-        series : typing.Sequence[str]
-        storage : typing.Mapping[str, ~CharmStorage]
-        subordinate : bool
-        summary : str
-        tags : typing.Sequence[str]
-        terms : typing.Sequence[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[str, ~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[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[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[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[~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[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[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[~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[~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[str]
-        endpoint : str
-        identity_endpoint : str
-        regions : typing.Sequence[~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[str, str]
-        auth_type : str
-        redacted : typing.Sequence[str]
-        '''
-        self.attrs = attrs
-        self.auth_type = auth_type
-        self.redacted = redacted
-
-
-
-class CloudCredentialArg(Type):
-    _toSchema = {'cloud_name': 'cloud-name', 'credential_name': 'credential-name'}
-    _toPy = {'cloud-name': 'cloud_name', 'credential-name': 'credential_name'}
-    def __init__(self, cloud_name=None, credential_name=None, **unknown_fields):
-        '''
-        cloud_name : str
-        credential_name : str
-        '''
-        self.cloud_name = cloud_name
-        self.credential_name = credential_name
-
-
-
-class CloudCredentialArgs(Type):
-    _toSchema = {'credentials': 'credentials', 'include_secrets': 'include-secrets'}
-    _toPy = {'credentials': 'credentials', 'include-secrets': 'include_secrets'}
-    def __init__(self, credentials=None, include_secrets=None, **unknown_fields):
-        '''
-        credentials : typing.Sequence[~CloudCredentialArg]
-        include_secrets : bool
-        '''
-        self.credentials = [CloudCredentialArg.from_json(o) for o in credentials or []]
-        self.include_secrets = include_secrets
-
-
-
-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[~CloudCredentialResult]
-        '''
-        self.results = [CloudCredentialResult.from_json(o) for o in results or []]
-
-
-
-class CloudDetails(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[str]
-        endpoint : str
-        identity_endpoint : str
-        regions : typing.Sequence[~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 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[~CloudImageMetadata]
-        '''
-        self.metadata = [CloudImageMetadata.from_json(o) for o in metadata or []]
-
-
-
-class CloudInfo(Type):
-    _toSchema = {'clouddetails': 'CloudDetails', 'users': 'users'}
-    _toPy = {'CloudDetails': 'clouddetails', 'users': 'users'}
-    def __init__(self, clouddetails=None, users=None, **unknown_fields):
-        '''
-        clouddetails : CloudDetails
-        users : typing.Sequence[~CloudUserInfo]
-        '''
-        self.clouddetails = CloudDetails.from_json(clouddetails) if clouddetails else None
-        self.users = [CloudUserInfo.from_json(o) for o in users or []]
-
-
-
-class CloudInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : CloudInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = CloudInfo.from_json(result) if result else None
-
-
-
-class CloudInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~CloudInfoResult]
-        '''
-        self.results = [CloudInfoResult.from_json(o) for o in results 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[~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[~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[~CloudSpecResult]
-        '''
-        self.results = [CloudSpecResult.from_json(o) for o in results or []]
-
-
-
-class CloudUserInfo(Type):
-    _toSchema = {'access': 'access', 'display_name': 'display-name', 'user': 'user'}
-    _toPy = {'access': 'access', 'display-name': 'display_name', 'user': 'user'}
-    def __init__(self, access=None, display_name=None, user=None, **unknown_fields):
-        '''
-        access : str
-        display_name : str
-        user : str
-        '''
-        self.access = access
-        self.display_name = display_name
-        self.user = user
-
-
-
-class CloudsResult(Type):
-    _toSchema = {'clouds': 'clouds'}
-    _toPy = {'clouds': 'clouds'}
-    def __init__(self, clouds=None, **unknown_fields):
-        '''
-        clouds : typing.Mapping[str, ~Cloud]
-        '''
-        self.clouds = clouds
-
-
-
-class ConfigResult(Type):
-    _toSchema = {'config': 'config', 'error': 'error'}
-    _toPy = {'config': 'config', 'error': 'error'}
-    def __init__(self, config=None, error=None, **unknown_fields):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        error : Error
-        '''
-        self.config = config
-        self.error = Error.from_json(error) if error else None
-
-
-
-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[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[~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[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[~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[~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[~ConsumeApplicationResult]
-        '''
-        self.results = [ConsumeApplicationResult.from_json(o) for o in results or []]
-
-
-
-class ConsumeOfferDetails(Type):
-    _toSchema = {'external_controller': 'external-controller', 'macaroon': 'macaroon', 'offer': 'offer'}
-    _toPy = {'external-controller': 'external_controller', 'macaroon': 'macaroon', 'offer': 'offer'}
-    def __init__(self, external_controller=None, macaroon=None, offer=None, **unknown_fields):
-        '''
-        external_controller : ExternalControllerInfo
-        macaroon : Macaroon
-        offer : ApplicationOfferDetails
-        '''
-        self.external_controller = ExternalControllerInfo.from_json(external_controller) if external_controller else None
-        self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
-        self.offer = ApplicationOfferDetails.from_json(offer) if offer else None
-
-
-
-class ConsumeOfferDetailsResult(Type):
-    _toSchema = {'consumeofferdetails': 'ConsumeOfferDetails', 'error': 'error'}
-    _toPy = {'ConsumeOfferDetails': 'consumeofferdetails', 'error': 'error'}
-    def __init__(self, consumeofferdetails=None, error=None, **unknown_fields):
-        '''
-        consumeofferdetails : ConsumeOfferDetails
-        error : Error
-        '''
-        self.consumeofferdetails = ConsumeOfferDetails.from_json(consumeofferdetails) if consumeofferdetails else None
-        self.error = Error.from_json(error) if error else None
-
-
-
-class ConsumeOfferDetailsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ConsumeOfferDetailsResult]
-        '''
-        self.results = [ConsumeOfferDetailsResult.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 ContainerLXDProfile(Type):
-    _toSchema = {'name': 'name', 'profile': 'profile'}
-    _toPy = {'name': 'name', 'profile': 'profile'}
-    def __init__(self, name=None, profile=None, **unknown_fields):
-        '''
-        name : str
-        profile : CharmLXDProfile
-        '''
-        self.name = name
-        self.profile = CharmLXDProfile.from_json(profile) if profile else None
-
-
-
-class ContainerManagerConfig(Type):
-    _toSchema = {'config': 'config'}
-    _toPy = {'config': 'config'}
-    def __init__(self, config=None, **unknown_fields):
-        '''
-        config : typing.Mapping[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 ContainerProfileResult(Type):
-    _toSchema = {'error': 'error', 'lxd_profiles': 'lxd-profiles'}
-    _toPy = {'error': 'error', 'lxd-profiles': 'lxd_profiles'}
-    def __init__(self, error=None, lxd_profiles=None, **unknown_fields):
-        '''
-        error : Error
-        lxd_profiles : typing.Sequence[~ContainerLXDProfile]
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.lxd_profiles = [ContainerLXDProfile.from_json(o) for o in lxd_profiles or []]
-
-
-
-class ContainerProfileResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ContainerProfileResult]
-        '''
-        self.results = [ContainerProfileResult.from_json(o) for o in results or []]
-
-
-
-class ControllerAPIInfoResult(Type):
-    _toSchema = {'addresses': 'addresses', 'cacert': 'cacert', 'error': 'error'}
-    _toPy = {'addresses': 'addresses', 'cacert': 'cacert', 'error': 'error'}
-    def __init__(self, addresses=None, cacert=None, error=None, **unknown_fields):
-        '''
-        addresses : typing.Sequence[str]
-        cacert : str
-        error : Error
-        '''
-        self.addresses = addresses
-        self.cacert = cacert
-        self.error = Error.from_json(error) if error else None
-
-
-
-class ControllerAPIInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ControllerAPIInfoResult]
-        '''
-        self.results = [ControllerAPIInfoResult.from_json(o) for o in results or []]
-
-
-
-class ControllerConfigResult(Type):
-    _toSchema = {'config': 'config'}
-    _toPy = {'config': 'config'}
-    def __init__(self, config=None, **unknown_fields):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-
-
-
-class ControllerConfigSet(Type):
-    _toSchema = {'config': 'config'}
-    _toPy = {'config': 'config'}
-    def __init__(self, config=None, **unknown_fields):
-        '''
-        config : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-
-
-
-class ControllerCredentialInfo(Type):
-    _toSchema = {'content': 'content', 'models': 'models'}
-    _toPy = {'content': 'content', 'models': 'models'}
-    def __init__(self, content=None, models=None, **unknown_fields):
-        '''
-        content : CredentialContent
-        models : typing.Sequence[~ModelAccess]
-        '''
-        self.content = CredentialContent.from_json(content) if content else None
-        self.models = [ModelAccess.from_json(o) for o in models or []]
-
-
-
-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[~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[str]
-        converted : typing.Sequence[str]
-        demoted : typing.Sequence[str]
-        maintained : typing.Sequence[str]
-        promoted : typing.Sequence[str]
-        removed : typing.Sequence[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[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[~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[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[~CreateSpaceParams]
-        '''
-        self.spaces = [CreateSpaceParams.from_json(o) for o in spaces or []]
-
-
-
-class CredentialContent(Type):
-    _toSchema = {'attrs': 'attrs', 'auth_type': 'auth-type', 'cloud': 'cloud', 'name': 'name'}
-    _toPy = {'attrs': 'attrs', 'auth-type': 'auth_type', 'cloud': 'cloud', 'name': 'name'}
-    def __init__(self, attrs=None, auth_type=None, cloud=None, name=None, **unknown_fields):
-        '''
-        attrs : typing.Mapping[str, str]
-        auth_type : str
-        cloud : str
-        name : str
-        '''
-        self.attrs = attrs
-        self.auth_type = auth_type
-        self.cloud = cloud
-        self.name = name
-
-
-
-class CredentialContentResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ControllerCredentialInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ControllerCredentialInfo.from_json(result) if result else None
-
-
-
-class CredentialContentResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~CredentialContentResult]
-        '''
-        self.results = [CredentialContentResult.from_json(o) for o in results 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[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[str]
-        state_addresses : typing.Sequence[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[~Entity]
-        destroyed_units : typing.Sequence[~Entity]
-        detached_storage : typing.Sequence[~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 DestroyApplicationOffers(Type):
-    _toSchema = {'force': 'force', 'offer_urls': 'offer-urls'}
-    _toPy = {'force': 'force', 'offer-urls': 'offer_urls'}
-    def __init__(self, force=None, offer_urls=None, **unknown_fields):
-        '''
-        force : bool
-        offer_urls : typing.Sequence[str]
-        '''
-        self.force = force
-        self.offer_urls = offer_urls
-
-
-
-class DestroyApplicationParams(Type):
-    _toSchema = {'application_tag': 'application-tag', 'destroy_storage': 'destroy-storage'}
-    _toPy = {'application-tag': 'application_tag', 'destroy-storage': 'destroy_storage'}
-    def __init__(self, application_tag=None, destroy_storage=None, **unknown_fields):
-        '''
-        application_tag : str
-        destroy_storage : bool
-        '''
-        self.application_tag = application_tag
-        self.destroy_storage = destroy_storage
-
-
-
-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[~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[str]
-        '''
-        self.unit_names = unit_names
-
-
-
-class DestroyApplicationsParams(Type):
-    _toSchema = {'applications': 'applications'}
-    _toPy = {'applications': 'applications'}
-    def __init__(self, applications=None, **unknown_fields):
-        '''
-        applications : typing.Sequence[~DestroyApplicationParams]
-        '''
-        self.applications = [DestroyApplicationParams.from_json(o) for o in applications or []]
-
-
-
-class DestroyConsumedApplicationParams(Type):
-    _toSchema = {'application_tag': 'application-tag'}
-    _toPy = {'application-tag': 'application_tag'}
-    def __init__(self, application_tag=None, **unknown_fields):
-        '''
-        application_tag : str
-        '''
-        self.application_tag = application_tag
-
-
-
-class DestroyConsumedApplicationsParams(Type):
-    _toSchema = {'applications': 'applications'}
-    _toPy = {'applications': 'applications'}
-    def __init__(self, applications=None, **unknown_fields):
-        '''
-        applications : typing.Sequence[~DestroyConsumedApplicationParams]
-        '''
-        self.applications = [DestroyConsumedApplicationParams.from_json(o) for o in applications or []]
-
-
-
-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[~Entity]
-        destroyed_units : typing.Sequence[~Entity]
-        detached_storage : typing.Sequence[~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[~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[str]
-        '''
-        self.force = force
-        self.machine_names = machine_names
-
-
-
-class DestroyMachinesParams(Type):
-    _toSchema = {'force': 'force', 'keep': 'keep', 'machine_tags': 'machine-tags'}
-    _toPy = {'force': 'force', 'keep': 'keep', 'machine-tags': 'machine_tags'}
-    def __init__(self, force=None, keep=None, machine_tags=None, **unknown_fields):
-        '''
-        force : bool
-        keep : bool
-        machine_tags : typing.Sequence[str]
-        '''
-        self.force = force
-        self.keep = keep
-        self.machine_tags = machine_tags
-
-
-
-class DestroyModelParams(Type):
-    _toSchema = {'destroy_storage': 'destroy-storage', 'model_tag': 'model-tag'}
-    _toPy = {'destroy-storage': 'destroy_storage', 'model-tag': 'model_tag'}
-    def __init__(self, destroy_storage=None, model_tag=None, **unknown_fields):
-        '''
-        destroy_storage : bool
-        model_tag : str
-        '''
-        self.destroy_storage = destroy_storage
-        self.model_tag = model_tag
-
-
-
-class DestroyModelsParams(Type):
-    _toSchema = {'models': 'models'}
-    _toPy = {'models': 'models'}
-    def __init__(self, models=None, **unknown_fields):
-        '''
-        models : typing.Sequence[~DestroyModelParams]
-        '''
-        self.models = [DestroyModelParams.from_json(o) for o in models or []]
-
-
-
-class DestroyRelation(Type):
-    _toSchema = {'endpoints': 'endpoints'}
-    _toPy = {'endpoints': 'endpoints'}
-    def __init__(self, endpoints=None, **unknown_fields):
-        '''
-        endpoints : typing.Sequence[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[~Entity]
-        detached_storage : typing.Sequence[~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 DestroyUnitParams(Type):
-    _toSchema = {'destroy_storage': 'destroy-storage', 'unit_tag': 'unit-tag'}
-    _toPy = {'destroy-storage': 'destroy_storage', 'unit-tag': 'unit_tag'}
-    def __init__(self, destroy_storage=None, unit_tag=None, **unknown_fields):
-        '''
-        destroy_storage : bool
-        unit_tag : str
-        '''
-        self.destroy_storage = destroy_storage
-        self.unit_tag = unit_tag
-
-
-
-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[~DestroyUnitResult]
-        '''
-        self.results = [DestroyUnitResult.from_json(o) for o in results or []]
-
-
-
-class DestroyUnitsParams(Type):
-    _toSchema = {'units': 'units'}
-    _toPy = {'units': 'units'}
-    def __init__(self, units=None, **unknown_fields):
-        '''
-        units : typing.Sequence[~DestroyUnitParams]
-        '''
-        self.units = [DestroyUnitParams.from_json(o) for o in units 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[str, typing.Any]
-        err : typing.Mapping[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[~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[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[~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[~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 EndpointFilterAttributes(Type):
-    _toSchema = {'interface': 'interface', 'name': 'name', 'role': 'role'}
-    _toPy = {'interface': 'interface', 'name': 'name', 'role': 'role'}
-    def __init__(self, interface=None, name=None, role=None, **unknown_fields):
-        '''
-        interface : str
-        name : str
-        role : str
-        '''
-        self.interface = interface
-        self.name = name
-        self.role = role
-
-
-
-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[~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[~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[~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[~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[~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[~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[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[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 EntityMacaroonArg(Type):
-    _toSchema = {'macaroon': 'macaroon', 'tag': 'tag'}
-    _toPy = {'macaroon': 'macaroon', 'tag': 'tag'}
-    def __init__(self, macaroon=None, tag=None, **unknown_fields):
-        '''
-        macaroon : Macaroon
-        tag : str
-        '''
-        self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
-        self.tag = tag
-
-
-
-class EntityMacaroonArgs(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~EntityMacaroonArg]
-        '''
-        self.args = [EntityMacaroonArg.from_json(o) for o in args or []]
-
-
-
-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[~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[~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[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[str, typing.Any]
-        info : str
-        status : str
-        tag : str
-        '''
-        self.data = data
-        self.info = info
-        self.status = status
-        self.tag = tag
-
-
-
-class EntityString(Type):
-    _toSchema = {'tag': 'tag', 'value': 'value'}
-    _toPy = {'tag': 'tag', 'value': 'value'}
-    def __init__(self, tag=None, value=None, **unknown_fields):
-        '''
-        tag : str
-        value : str
-        '''
-        self.tag = tag
-        self.value = value
-
-
-
-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[~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[str]
-        '''
-        self.patterns = patterns
-
-
-
-class EnvListResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~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[~ErrorResult]
-        '''
-        self.results = [ErrorResult.from_json(o) for o in results or []]
-
-
-
-class ExternalControllerInfo(Type):
-    _toSchema = {'addrs': 'addrs', 'ca_cert': 'ca-cert', 'controller_alias': 'controller-alias', 'controller_tag': 'controller-tag'}
-    _toPy = {'addrs': 'addrs', 'ca-cert': 'ca_cert', 'controller-alias': 'controller_alias', 'controller-tag': 'controller_tag'}
-    def __init__(self, addrs=None, ca_cert=None, controller_alias=None, controller_tag=None, **unknown_fields):
-        '''
-        addrs : typing.Sequence[str]
-        ca_cert : str
-        controller_alias : str
-        controller_tag : str
-        '''
-        self.addrs = addrs
-        self.ca_cert = ca_cert
-        self.controller_alias = controller_alias
-        self.controller_tag = controller_tag
-
-
-
-class ExternalControllerInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ExternalControllerInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ExternalControllerInfo.from_json(result) if result else None
-
-
-
-class ExternalControllerInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ExternalControllerInfoResult]
-        '''
-        self.results = [ExternalControllerInfoResult.from_json(o) for o in results or []]
-
-
-
-class FanConfigEntry(Type):
-    _toSchema = {'overlay': 'overlay', 'underlay': 'underlay'}
-    _toPy = {'overlay': 'overlay', 'underlay': 'underlay'}
-    def __init__(self, overlay=None, underlay=None, **unknown_fields):
-        '''
-        overlay : str
-        underlay : str
-        '''
-        self.overlay = overlay
-        self.underlay = underlay
-
-
-
-class FanConfigResult(Type):
-    _toSchema = {'fans': 'fans'}
-    _toPy = {'fans': 'fans'}
-    def __init__(self, fans=None, **unknown_fields):
-        '''
-        fans : typing.Sequence[~FanConfigEntry]
-        '''
-        self.fans = [FanConfigEntry.from_json(o) for o in fans 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[~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[~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[~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[str, ~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[~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[~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[str]
-        '''
-        self.machines = machines
-
-
-
-class FilesystemFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None, **unknown_fields):
-        '''
-        filters : typing.Sequence[~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[str, typing.Any]
-        filesystem_tag : str
-        provider : str
-        size : int
-        tags : typing.Mapping[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[~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[~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[~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[str]
-        '''
-        self.names = names
-
-
-
-class FindTags(Type):
-    _toSchema = {'prefixes': 'prefixes'}
-    _toPy = {'prefixes': 'prefixes'}
-    def __init__(self, prefixes=None, **unknown_fields):
-        '''
-        prefixes : typing.Sequence[str]
-        '''
-        self.prefixes = prefixes
-
-
-
-class FindTagsResults(Type):
-    _toSchema = {'matches': 'matches'}
-    _toPy = {'matches': 'matches'}
-    def __init__(self, matches=None, **unknown_fields):
-        '''
-        matches : typing.Sequence[~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[~Tools]
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.list_ = [Tools.from_json(o) for o in list_ or []]
-
-
-
-class FirewallRule(Type):
-    _toSchema = {'known_service': 'known-service', 'whitelist_cidrs': 'whitelist-cidrs'}
-    _toPy = {'known-service': 'known_service', 'whitelist-cidrs': 'whitelist_cidrs'}
-    def __init__(self, known_service=None, whitelist_cidrs=None, **unknown_fields):
-        '''
-        known_service : str
-        whitelist_cidrs : typing.Sequence[str]
-        '''
-        self.known_service = known_service
-        self.whitelist_cidrs = whitelist_cidrs
-
-
-
-class FirewallRuleArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~FirewallRule]
-        '''
-        self.args = [FirewallRule.from_json(o) for o in args or []]
-
-
-
-class FullStatus(Type):
-    _toSchema = {'applications': 'applications', 'controller_timestamp': 'controller-timestamp', 'machines': 'machines', 'model': 'model', 'offers': 'offers', 'relations': 'relations', 'remote_applications': 'remote-applications'}
-    _toPy = {'applications': 'applications', 'controller-timestamp': 'controller_timestamp', 'machines': 'machines', 'model': 'model', 'offers': 'offers', 'relations': 'relations', 'remote-applications': 'remote_applications'}
-    def __init__(self, applications=None, controller_timestamp=None, machines=None, model=None, offers=None, relations=None, remote_applications=None, **unknown_fields):
-        '''
-        applications : typing.Mapping[str, ~ApplicationStatus]
-        controller_timestamp : str
-        machines : typing.Mapping[str, ~MachineStatus]
-        model : ModelStatusInfo
-        offers : typing.Mapping[str, ~ApplicationOfferStatus]
-        relations : typing.Sequence[~RelationStatus]
-        remote_applications : typing.Mapping[str, ~RemoteApplicationStatus]
-        '''
-        self.applications = applications
-        self.controller_timestamp = controller_timestamp
-        self.machines = machines
-        self.model = ModelStatusInfo.from_json(model) if model else None
-        self.offers = offers
-        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[~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[str, str]
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.settings = settings
-
-
-
-class GetTokenArg(Type):
-    _toSchema = {'tag': 'tag'}
-    _toPy = {'tag': 'tag'}
-    def __init__(self, tag=None, **unknown_fields):
-        '''
-        tag : str
-        '''
-        self.tag = tag
-
-
-
-class GetTokenArgs(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~GetTokenArg]
-        '''
-        self.args = [GetTokenArg.from_json(o) for o in args or []]
-
-
-
-class GoalState(Type):
-    _toSchema = {'relations': 'relations', 'units': 'units'}
-    _toPy = {'relations': 'relations', 'units': 'units'}
-    def __init__(self, relations=None, units=None, **unknown_fields):
-        '''
-        relations : typing.Mapping[str, typing.Any]
-        units : typing.Mapping[str, ~GoalStateStatus]
-        '''
-        self.relations = relations
-        self.units = units
-
-
-
-class GoalStateResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : GoalState
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = GoalState.from_json(result) if result else None
-
-
-
-class GoalStateResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~GoalStateResult]
-        '''
-        self.results = [GoalStateResult.from_json(o) for o in results or []]
-
-
-
-class GoalStateStatus(Type):
-    _toSchema = {'since': 'since', 'status': 'status'}
-    _toPy = {'since': 'since', 'status': 'status'}
-    def __init__(self, since=None, status=None, **unknown_fields):
-        '''
-        since : str
-        status : str
-        '''
-        self.since = since
-        self.status = status
-
-
-
-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[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[~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[~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[~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[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[~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[~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[str]
-        region : str
-        root_storage_type : str
-        series : typing.Sequence[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 ImportStorageDetails(Type):
-    _toSchema = {'storage_tag': 'storage-tag'}
-    _toPy = {'storage-tag': 'storage_tag'}
-    def __init__(self, storage_tag=None, **unknown_fields):
-        '''
-        storage_tag : str
-        '''
-        self.storage_tag = storage_tag
-
-
-
-class ImportStorageParams(Type):
-    _toSchema = {'kind': 'kind', 'pool': 'pool', 'provider_id': 'provider-id', 'storage_name': 'storage-name'}
-    _toPy = {'kind': 'kind', 'pool': 'pool', 'provider-id': 'provider_id', 'storage-name': 'storage_name'}
-    def __init__(self, kind=None, pool=None, provider_id=None, storage_name=None, **unknown_fields):
-        '''
-        kind : int
-        pool : str
-        provider_id : str
-        storage_name : str
-        '''
-        self.kind = kind
-        self.pool = pool
-        self.provider_id = provider_id
-        self.storage_name = storage_name
-
-
-
-class ImportStorageResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ImportStorageDetails
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ImportStorageDetails.from_json(result) if result else None
-
-
-
-class ImportStorageResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ImportStorageResult]
-        '''
-        self.results = [ImportStorageResult.from_json(o) for o in results or []]
-
-
-
-class IngressNetworksChangeEvent(Type):
-    _toSchema = {'application_token': 'application-token', 'ingress_required': 'ingress-required', 'macaroons': 'macaroons', 'networks': 'networks', 'relation_token': 'relation-token'}
-    _toPy = {'application-token': 'application_token', 'ingress-required': 'ingress_required', 'macaroons': 'macaroons', 'networks': 'networks', 'relation-token': 'relation_token'}
-    def __init__(self, application_token=None, ingress_required=None, macaroons=None, networks=None, relation_token=None, **unknown_fields):
-        '''
-        application_token : str
-        ingress_required : bool
-        macaroons : typing.Sequence[~Macaroon]
-        networks : typing.Sequence[str]
-        relation_token : str
-        '''
-        self.application_token = application_token
-        self.ingress_required = ingress_required
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.networks = networks
-        self.relation_token = relation_token
-
-
-
-class IngressNetworksChanges(Type):
-    _toSchema = {'changes': 'changes'}
-    _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None, **unknown_fields):
-        '''
-        changes : typing.Sequence[~IngressNetworksChangeEvent]
-        '''
-        self.changes = [IngressNetworksChangeEvent.from_json(o) for o in changes or []]
-
-
-
-class InitiateMigrationArgs(Type):
-    _toSchema = {'specs': 'specs'}
-    _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None, **unknown_fields):
-        '''
-        specs : typing.Sequence[~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[~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[~NetworkConfig]
-        nonce : str
-        tag : str
-        volume_attachments : typing.Mapping[str, ~VolumeAttachmentInfo]
-        volumes : typing.Sequence[~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[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[~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[~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[~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[~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 InvalidateCredentialArg(Type):
-    _toSchema = {'reason': 'reason'}
-    _toPy = {'reason': 'reason'}
-    def __init__(self, reason=None, **unknown_fields):
-        '''
-        reason : str
-        '''
-        self.reason = reason
-
-
-
-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[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[~JobsResult]
-        '''
-        self.results = [JobsResult.from_json(o) for o in results or []]
-
-
-
-class KnownServiceArgs(Type):
-    _toSchema = {'known_services': 'known-services'}
-    _toPy = {'known-services': 'known_services'}
-    def __init__(self, known_services=None, **unknown_fields):
-        '''
-        known_services : typing.Sequence[str]
-        '''
-        self.known_services = known_services
-
-
-
-class KubernetesDeviceParams(Type):
-    _toSchema = {'attributes': 'Attributes', 'count': 'Count', 'type_': 'Type'}
-    _toPy = {'Attributes': 'attributes', 'Count': 'count', 'Type': 'type_'}
-    def __init__(self, attributes=None, count=None, type_=None, **unknown_fields):
-        '''
-        attributes : typing.Mapping[str, str]
-        count : int
-        type_ : str
-        '''
-        self.attributes = attributes
-        self.count = count
-        self.type_ = type_
-
-
-
-class KubernetesFilesystemAttachmentParams(Type):
-    _toSchema = {'mount_point': 'mount-point', 'provider': 'provider', 'read_only': 'read-only'}
-    _toPy = {'mount-point': 'mount_point', 'provider': 'provider', 'read-only': 'read_only'}
-    def __init__(self, mount_point=None, provider=None, read_only=None, **unknown_fields):
-        '''
-        mount_point : str
-        provider : str
-        read_only : bool
-        '''
-        self.mount_point = mount_point
-        self.provider = provider
-        self.read_only = read_only
-
-
-
-class KubernetesFilesystemInfo(Type):
-    _toSchema = {'data': 'data', 'filesystem_id': 'filesystem-id', 'info': 'info', 'mount_point': 'mount-point', 'pool': 'pool', 'read_only': 'read-only', 'size': 'size', 'status': 'status', 'storagename': 'storagename', 'volume': 'volume'}
-    _toPy = {'data': 'data', 'filesystem-id': 'filesystem_id', 'info': 'info', 'mount-point': 'mount_point', 'pool': 'pool', 'read-only': 'read_only', 'size': 'size', 'status': 'status', 'storagename': 'storagename', 'volume': 'volume'}
-    def __init__(self, data=None, filesystem_id=None, info=None, mount_point=None, pool=None, read_only=None, size=None, status=None, storagename=None, volume=None, **unknown_fields):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        filesystem_id : str
-        info : str
-        mount_point : str
-        pool : str
-        read_only : bool
-        size : int
-        status : str
-        storagename : str
-        volume : KubernetesVolumeInfo
-        '''
-        self.data = data
-        self.filesystem_id = filesystem_id
-        self.info = info
-        self.mount_point = mount_point
-        self.pool = pool
-        self.read_only = read_only
-        self.size = size
-        self.status = status
-        self.storagename = storagename
-        self.volume = KubernetesVolumeInfo.from_json(volume) if volume else None
-
-
-
-class KubernetesFilesystemParams(Type):
-    _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
-    _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
-    def __init__(self, attachment=None, attributes=None, provider=None, size=None, storagename=None, tags=None, **unknown_fields):
-        '''
-        attachment : KubernetesFilesystemAttachmentParams
-        attributes : typing.Mapping[str, typing.Any]
-        provider : str
-        size : int
-        storagename : str
-        tags : typing.Mapping[str, str]
-        '''
-        self.attachment = KubernetesFilesystemAttachmentParams.from_json(attachment) if attachment else None
-        self.attributes = attributes
-        self.provider = provider
-        self.size = size
-        self.storagename = storagename
-        self.tags = tags
-
-
-
-class KubernetesProvisioningInfo(Type):
-    _toSchema = {'constraints': 'constraints', 'devices': 'devices', 'filesystems': 'filesystems', 'placement': 'placement', 'pod_spec': 'pod-spec', 'tags': 'tags', 'volumes': 'volumes'}
-    _toPy = {'constraints': 'constraints', 'devices': 'devices', 'filesystems': 'filesystems', 'placement': 'placement', 'pod-spec': 'pod_spec', 'tags': 'tags', 'volumes': 'volumes'}
-    def __init__(self, constraints=None, devices=None, filesystems=None, placement=None, pod_spec=None, tags=None, volumes=None, **unknown_fields):
-        '''
-        constraints : Value
-        devices : typing.Sequence[~KubernetesDeviceParams]
-        filesystems : typing.Sequence[~KubernetesFilesystemParams]
-        placement : str
-        pod_spec : str
-        tags : typing.Mapping[str, str]
-        volumes : typing.Sequence[~KubernetesVolumeParams]
-        '''
-        self.constraints = Value.from_json(constraints) if constraints else None
-        self.devices = [KubernetesDeviceParams.from_json(o) for o in devices or []]
-        self.filesystems = [KubernetesFilesystemParams.from_json(o) for o in filesystems or []]
-        self.placement = placement
-        self.pod_spec = pod_spec
-        self.tags = tags
-        self.volumes = [KubernetesVolumeParams.from_json(o) for o in volumes or []]
-
-
-
-class KubernetesProvisioningInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : KubernetesProvisioningInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = KubernetesProvisioningInfo.from_json(result) if result else None
-
-
-
-class KubernetesProvisioningInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~KubernetesProvisioningInfoResult]
-        '''
-        self.results = [KubernetesProvisioningInfoResult.from_json(o) for o in results or []]
-
-
-
-class KubernetesVolumeAttachmentParams(Type):
-    _toSchema = {'provider': 'provider', 'read_only': 'read-only'}
-    _toPy = {'provider': 'provider', 'read-only': 'read_only'}
-    def __init__(self, provider=None, read_only=None, **unknown_fields):
-        '''
-        provider : str
-        read_only : bool
-        '''
-        self.provider = provider
-        self.read_only = read_only
-
-
-
-class KubernetesVolumeInfo(Type):
-    _toSchema = {'data': 'data', 'info': 'info', 'persistent': 'persistent', 'pool': 'pool', 'size': 'size', 'status': 'status', 'volume_id': 'volume-id'}
-    _toPy = {'data': 'data', 'info': 'info', 'persistent': 'persistent', 'pool': 'pool', 'size': 'size', 'status': 'status', 'volume-id': 'volume_id'}
-    def __init__(self, data=None, info=None, persistent=None, pool=None, size=None, status=None, volume_id=None, **unknown_fields):
-        '''
-        data : typing.Mapping[str, typing.Any]
-        info : str
-        persistent : bool
-        pool : str
-        size : int
-        status : str
-        volume_id : str
-        '''
-        self.data = data
-        self.info = info
-        self.persistent = persistent
-        self.pool = pool
-        self.size = size
-        self.status = status
-        self.volume_id = volume_id
-
-
-
-class KubernetesVolumeParams(Type):
-    _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
-    _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'storagename': 'storagename', 'tags': 'tags'}
-    def __init__(self, attachment=None, attributes=None, provider=None, size=None, storagename=None, tags=None, **unknown_fields):
-        '''
-        attachment : KubernetesVolumeAttachmentParams
-        attributes : typing.Mapping[str, typing.Any]
-        provider : str
-        size : int
-        storagename : str
-        tags : typing.Mapping[str, str]
-        '''
-        self.attachment = KubernetesVolumeAttachmentParams.from_json(attachment) if attachment else None
-        self.attributes = attributes
-        self.provider = provider
-        self.size = size
-        self.storagename = storagename
-        self.tags = tags
-
-
-
-class LXDProfile(Type):
-    _toSchema = {'config': 'config', 'description': 'description', 'devices': 'devices'}
-    _toPy = {'config': 'config', 'description': 'description', 'devices': 'devices'}
-    def __init__(self, config=None, description=None, devices=None, **unknown_fields):
-        '''
-        config : typing.Mapping[str, str]
-        description : str
-        devices : typing.Mapping[str, typing.Any]
-        '''
-        self.config = config
-        self.description = description
-        self.devices = devices
-
-
-
-class LXDProfileUpgradeMessages(Type):
-    _toSchema = {'application': 'application', 'watcher_id': 'watcher-id'}
-    _toPy = {'application': 'application', 'watcher-id': 'watcher_id'}
-    def __init__(self, application=None, watcher_id=None, **unknown_fields):
-        '''
-        application : Entity
-        watcher_id : str
-        '''
-        self.application = Entity.from_json(application) if application else None
-        self.watcher_id = watcher_id
-
-
-
-class LXDProfileUpgradeMessagesResult(Type):
-    _toSchema = {'error': 'error', 'message': 'message', 'unit_name': 'unit-name'}
-    _toPy = {'error': 'error', 'message': 'message', 'unit-name': 'unit_name'}
-    def __init__(self, error=None, message=None, unit_name=None, **unknown_fields):
-        '''
-        error : Error
-        message : str
-        unit_name : str
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.message = message
-        self.unit_name = unit_name
-
-
-
-class LXDProfileUpgradeMessagesResults(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~LXDProfileUpgradeMessagesResult]
-        '''
-        self.args = [LXDProfileUpgradeMessagesResult.from_json(o) for o in args 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[~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[~CloudImageMetadata]
-        '''
-        self.result = [CloudImageMetadata.from_json(o) for o in result or []]
-
-
-
-class ListCloudInfo(Type):
-    _toSchema = {'clouddetails': 'CloudDetails', 'user_access': 'user-access'}
-    _toPy = {'CloudDetails': 'clouddetails', 'user-access': 'user_access'}
-    def __init__(self, clouddetails=None, user_access=None, **unknown_fields):
-        '''
-        clouddetails : CloudDetails
-        user_access : str
-        '''
-        self.clouddetails = CloudDetails.from_json(clouddetails) if clouddetails else None
-        self.user_access = user_access
-
-
-
-class ListCloudInfoResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ListCloudInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ListCloudInfo.from_json(result) if result else None
-
-
-
-class ListCloudInfoResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ListCloudInfoResult]
-        '''
-        self.results = [ListCloudInfoResult.from_json(o) for o in results or []]
-
-
-
-class ListCloudsRequest(Type):
-    _toSchema = {'all_': 'all', 'user_tag': 'user-tag'}
-    _toPy = {'all': 'all_', 'user-tag': 'user_tag'}
-    def __init__(self, all_=None, user_tag=None, **unknown_fields):
-        '''
-        all_ : bool
-        user_tag : str
-        '''
-        self.all_ = all_
-        self.user_tag = user_tag
-
-
-
-class ListFirewallRulesResults(Type):
-    _toSchema = {'rules': 'Rules'}
-    _toPy = {'Rules': 'rules'}
-    def __init__(self, rules=None, **unknown_fields):
-        '''
-        rules : typing.Sequence[~FirewallRule]
-        '''
-        self.rules = [FirewallRule.from_json(o) for o in rules or []]
-
-
-
-class ListImageResult(Type):
-    _toSchema = {'result': 'result'}
-    _toPy = {'result': 'result'}
-    def __init__(self, result=None, **unknown_fields):
-        '''
-        result : typing.Sequence[~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[~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[~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[~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[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[~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[~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[~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[~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[~LookUpPayloadArg]
-        '''
-        self.args = [LookUpPayloadArg.from_json(o) for o in args or []]
-
-
-
-class Macaroon(Type):
-    _toSchema = {}
-    _toPy = {}
-    def __init__(self, **unknown_fields):
-        '''
-
-        '''
-        pass
-
-
-
-class MacaroonResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : Macaroon
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = Macaroon.from_json(result) if result else None
-
-
-
-class MacaroonResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~MacaroonResult]
-        '''
-        self.results = [MacaroonResult.from_json(o) for o in results or []]
-
-
-
-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[~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[~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[~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[~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[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[~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[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[~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[~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[~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[~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[~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[str, ~MachineStatus]
-        dns_name : str
-        hardware : str
-        has_vote : bool
-        id_ : str
-        instance_id : str
-        instance_status : DetailedStatus
-        ip_addresses : typing.Sequence[str]
-        jobs : typing.Sequence[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[~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[~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[~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[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[~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[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[~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[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[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[~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[~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[~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[~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[~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[~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[str]
-        source_ca_cert : str
-        target_api_addrs : typing.Sequence[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[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[str]
-        migration_id : str
-        phase : str
-        success_count : int
-        unknown_count : int
-        unknown_sample : typing.Sequence[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 ModelAccess(Type):
-    _toSchema = {'access': 'access', 'model': 'model'}
-    _toPy = {'access': 'access', 'model': 'model'}
-    def __init__(self, access=None, model=None, **unknown_fields):
-        '''
-        access : str
-        model : str
-        '''
-        self.access = access
-        self.model = model
-
-
-
-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[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[~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[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[str, ~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[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 ModelCredential(Type):
-    _toSchema = {'credential_tag': 'credential-tag', 'exists': 'exists', 'model_tag': 'model-tag', 'valid': 'valid'}
-    _toPy = {'credential-tag': 'credential_tag', 'exists': 'exists', 'model-tag': 'model_tag', 'valid': 'valid'}
-    def __init__(self, credential_tag=None, exists=None, model_tag=None, valid=None, **unknown_fields):
-        '''
-        credential_tag : str
-        exists : bool
-        model_tag : str
-        valid : bool
-        '''
-        self.credential_tag = credential_tag
-        self.exists = exists
-        self.model_tag = model_tag
-        self.valid = valid
-
-
-
-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[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[str, typing.Any]
-        default : typing.Mapping[str, typing.Any]
-        regions : typing.Sequence[~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[str, ~ModelDefaults]
-        '''
-        self.config = config
-
-
-
-class ModelEntityCount(Type):
-    _toSchema = {'count': 'count', 'entity': 'entity'}
-    _toPy = {'count': 'count', 'entity': 'entity'}
-    def __init__(self, count=None, entity=None, **unknown_fields):
-        '''
-        count : int
-        entity : str
-        '''
-        self.count = count
-        self.entity = entity
-
-
-
-class ModelFilesystemInfo(Type):
-    _toSchema = {'detachable': 'detachable', 'id_': 'id', 'message': 'message', 'provider_id': 'provider-id', 'status': 'status'}
-    _toPy = {'detachable': 'detachable', 'id': 'id_', 'message': 'message', 'provider-id': 'provider_id', 'status': 'status'}
-    def __init__(self, detachable=None, id_=None, message=None, provider_id=None, status=None, **unknown_fields):
-        '''
-        detachable : bool
-        id_ : str
-        message : str
-        provider_id : str
-        status : str
-        '''
-        self.detachable = detachable
-        self.id_ = id_
-        self.message = message
-        self.provider_id = provider_id
-        self.status = status
-
-
-
-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', 'type_': 'type', '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', 'type': 'type_', '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, type_=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[~ModelMachineInfo]
-        migration : ModelMigrationStatus
-        name : str
-        owner_tag : str
-        provider_type : str
-        sla : ModelSLAInfo
-        status : EntityStatus
-        type_ : str
-        users : typing.Sequence[~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.type_ = type_
-        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[~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[~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[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 ModelSequencesResult(Type):
-    _toSchema = {'sequences': 'sequences'}
-    _toPy = {'sequences': 'sequences'}
-    def __init__(self, sequences=None, **unknown_fields):
-        '''
-        sequences : typing.Mapping[str, int]
-        '''
-        self.sequences = sequences
-
-
-
-class ModelSet(Type):
-    _toSchema = {'config': 'config'}
-    _toPy = {'config': 'config'}
-    def __init__(self, config=None, **unknown_fields):
-        '''
-        config : typing.Mapping[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[~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', 'type_': 'type', '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', 'type': 'type_', 'version': 'version'}
-    def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, type_=None, version=None, **unknown_fields):
-        '''
-        available_version : str
-        cloud_tag : str
-        meter_status : MeterStatus
-        model_status : DetailedStatus
-        name : str
-        region : str
-        sla : str
-        type_ : 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.type_ = type_
-        self.version = version
-
-
-
-class ModelStatusResults(Type):
-    _toSchema = {'models': 'models'}
-    _toPy = {'models': 'models'}
-    def __init__(self, models=None, **unknown_fields):
-        '''
-        models : typing.Sequence[~ModelStatus]
-        '''
-        self.models = [ModelStatus.from_json(o) for o in models or []]
-
-
-
-class ModelSummariesRequest(Type):
-    _toSchema = {'all_': 'all', 'user_tag': 'user-tag'}
-    _toPy = {'all': 'all_', 'user-tag': 'user_tag'}
-    def __init__(self, all_=None, user_tag=None, **unknown_fields):
-        '''
-        all_ : bool
-        user_tag : str
-        '''
-        self.all_ = all_
-        self.user_tag = user_tag
-
-
-
-class ModelSummary(Type):
-    _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'counts': 'counts', 'default_series': 'default-series', 'last_connection': 'last-connection', 'life': 'life', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'type_': 'type', 'user_access': 'user-access', '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', 'counts': 'counts', 'default-series': 'default_series', 'last-connection': 'last_connection', 'life': 'life', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'type': 'type_', 'user-access': 'user_access', 'uuid': 'uuid'}
-    def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, counts=None, default_series=None, last_connection=None, life=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, type_=None, user_access=None, uuid=None, **unknown_fields):
-        '''
-        agent_version : Number
-        cloud_credential_tag : str
-        cloud_region : str
-        cloud_tag : str
-        controller_uuid : str
-        counts : typing.Sequence[~ModelEntityCount]
-        default_series : str
-        last_connection : str
-        life : str
-        migration : ModelMigrationStatus
-        name : str
-        owner_tag : str
-        provider_type : str
-        sla : ModelSLAInfo
-        status : EntityStatus
-        type_ : str
-        user_access : str
-        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.counts = [ModelEntityCount.from_json(o) for o in counts or []]
-        self.default_series = default_series
-        self.last_connection = last_connection
-        self.life = life
-        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.type_ = type_
-        self.user_access = user_access
-        self.uuid = uuid
-
-
-
-class ModelSummaryResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : ModelSummary
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = ModelSummary.from_json(result) if result else None
-
-
-
-class ModelSummaryResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ModelSummaryResult]
-        '''
-        self.results = [ModelSummaryResult.from_json(o) for o in results 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[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[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[~ModelUserInfoResult]
-        '''
-        self.results = [ModelUserInfoResult.from_json(o) for o in results or []]
-
-
-
-class ModelVolumeInfo(Type):
-    _toSchema = {'detachable': 'detachable', 'id_': 'id', 'message': 'message', 'provider_id': 'provider-id', 'status': 'status'}
-    _toPy = {'detachable': 'detachable', 'id': 'id_', 'message': 'message', 'provider-id': 'provider_id', 'status': 'status'}
-    def __init__(self, detachable=None, id_=None, message=None, provider_id=None, status=None, **unknown_fields):
-        '''
-        detachable : bool
-        id_ : str
-        message : str
-        provider_id : str
-        status : str
-        '''
-        self.detachable = detachable
-        self.id_ = id_
-        self.message = message
-        self.provider_id = provider_id
-        self.status = status
-
-
-
-class ModifyCloudAccess(Type):
-    _toSchema = {'access': 'access', 'action': 'action', 'cloud_tag': 'cloud-tag', 'user_tag': 'user-tag'}
-    _toPy = {'access': 'access', 'action': 'action', 'cloud-tag': 'cloud_tag', 'user-tag': 'user_tag'}
-    def __init__(self, access=None, action=None, cloud_tag=None, user_tag=None, **unknown_fields):
-        '''
-        access : str
-        action : str
-        cloud_tag : str
-        user_tag : str
-        '''
-        self.access = access
-        self.action = action
-        self.cloud_tag = cloud_tag
-        self.user_tag = user_tag
-
-
-
-class ModifyCloudAccessRequest(Type):
-    _toSchema = {'changes': 'changes'}
-    _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None, **unknown_fields):
-        '''
-        changes : typing.Sequence[~ModifyCloudAccess]
-        '''
-        self.changes = [ModifyCloudAccess.from_json(o) for o in changes 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[~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[~ModifyModelAccess]
-        '''
-        self.changes = [ModifyModelAccess.from_json(o) for o in changes or []]
-
-
-
-class ModifyOfferAccess(Type):
-    _toSchema = {'access': 'access', 'action': 'action', 'offer_url': 'offer-url', 'user_tag': 'user-tag'}
-    _toPy = {'access': 'access', 'action': 'action', 'offer-url': 'offer_url', 'user-tag': 'user_tag'}
-    def __init__(self, access=None, action=None, offer_url=None, user_tag=None, **unknown_fields):
-        '''
-        access : str
-        action : str
-        offer_url : str
-        user_tag : str
-        '''
-        self.access = access
-        self.action = action
-        self.offer_url = offer_url
-        self.user_tag = user_tag
-
-
-
-class ModifyOfferAccessRequest(Type):
-    _toSchema = {'changes': 'changes'}
-    _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None, **unknown_fields):
-        '''
-        changes : typing.Sequence[~ModifyOfferAccess]
-        '''
-        self.changes = [ModifyOfferAccess.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[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[~HAMember]
-        master : HAMember
-        rs_members : typing.Sequence[~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[str]
-        dns_servers : typing.Sequence[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[~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[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[~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[str, ~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[str]
-        gateway : str
-        ip_addresses : typing.Sequence[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[~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 OfferArg(Type):
-    _toSchema = {'macaroons': 'macaroons', 'offer_uuid': 'offer-uuid'}
-    _toPy = {'macaroons': 'macaroons', 'offer-uuid': 'offer_uuid'}
-    def __init__(self, macaroons=None, offer_uuid=None, **unknown_fields):
-        '''
-        macaroons : typing.Sequence[~Macaroon]
-        offer_uuid : str
-        '''
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.offer_uuid = offer_uuid
-
-
-
-class OfferArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~OfferArg]
-        '''
-        self.args = [OfferArg.from_json(o) for o in args or []]
-
-
-
-class OfferConnection(Type):
-    _toSchema = {'endpoint': 'endpoint', 'ingress_subnets': 'ingress-subnets', 'relation_id': 'relation-id', 'source_model_tag': 'source-model-tag', 'status': 'status', 'username': 'username'}
-    _toPy = {'endpoint': 'endpoint', 'ingress-subnets': 'ingress_subnets', 'relation-id': 'relation_id', 'source-model-tag': 'source_model_tag', 'status': 'status', 'username': 'username'}
-    def __init__(self, endpoint=None, ingress_subnets=None, relation_id=None, source_model_tag=None, status=None, username=None, **unknown_fields):
-        '''
-        endpoint : str
-        ingress_subnets : typing.Sequence[str]
-        relation_id : int
-        source_model_tag : str
-        status : EntityStatus
-        username : str
-        '''
-        self.endpoint = endpoint
-        self.ingress_subnets = ingress_subnets
-        self.relation_id = relation_id
-        self.source_model_tag = source_model_tag
-        self.status = EntityStatus.from_json(status) if status else None
-        self.username = username
-
-
-
-class OfferFilter(Type):
-    _toSchema = {'allowed_users': 'allowed-users', 'application_description': 'application-description', 'application_name': 'application-name', 'application_user': 'application-user', 'connected_users': 'connected-users', 'endpoints': 'endpoints', 'model_name': 'model-name', 'offer_name': 'offer-name', 'owner_name': 'owner-name'}
-    _toPy = {'allowed-users': 'allowed_users', 'application-description': 'application_description', 'application-name': 'application_name', 'application-user': 'application_user', 'connected-users': 'connected_users', 'endpoints': 'endpoints', 'model-name': 'model_name', 'offer-name': 'offer_name', 'owner-name': 'owner_name'}
-    def __init__(self, allowed_users=None, application_description=None, application_name=None, application_user=None, connected_users=None, endpoints=None, model_name=None, offer_name=None, owner_name=None, **unknown_fields):
-        '''
-        allowed_users : typing.Sequence[str]
-        application_description : str
-        application_name : str
-        application_user : str
-        connected_users : typing.Sequence[str]
-        endpoints : typing.Sequence[~EndpointFilterAttributes]
-        model_name : str
-        offer_name : str
-        owner_name : str
-        '''
-        self.allowed_users = allowed_users
-        self.application_description = application_description
-        self.application_name = application_name
-        self.application_user = application_user
-        self.connected_users = connected_users
-        self.endpoints = [EndpointFilterAttributes.from_json(o) for o in endpoints or []]
-        self.model_name = model_name
-        self.offer_name = offer_name
-        self.owner_name = owner_name
-
-
-
-class OfferFilters(Type):
-    _toSchema = {'filters': 'Filters'}
-    _toPy = {'Filters': 'filters'}
-    def __init__(self, filters=None, **unknown_fields):
-        '''
-        filters : typing.Sequence[~OfferFilter]
-        '''
-        self.filters = [OfferFilter.from_json(o) for o in filters or []]
-
-
-
-class OfferStatusChange(Type):
-    _toSchema = {'offer_name': 'offer-name', 'status': 'status'}
-    _toPy = {'offer-name': 'offer_name', 'status': 'status'}
-    def __init__(self, offer_name=None, status=None, **unknown_fields):
-        '''
-        offer_name : str
-        status : EntityStatus
-        '''
-        self.offer_name = offer_name
-        self.status = EntityStatus.from_json(status) if status else None
-
-
-
-class OfferStatusWatchResult(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[~OfferStatusChange]
-        error : Error
-        watcher_id : str
-        '''
-        self.changes = [OfferStatusChange.from_json(o) for o in changes or []]
-        self.error = Error.from_json(error) if error else None
-        self.watcher_id = watcher_id
-
-
-
-class OfferStatusWatchResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~OfferStatusWatchResult]
-        '''
-        self.results = [OfferStatusWatchResult.from_json(o) for o in results or []]
-
-
-
-class OfferURLs(Type):
-    _toSchema = {'offer_urls': 'offer-urls'}
-    _toPy = {'offer-urls': 'offer_urls'}
-    def __init__(self, offer_urls=None, **unknown_fields):
-        '''
-        offer_urls : typing.Sequence[str]
-        '''
-        self.offer_urls = offer_urls
-
-
-
-class OfferUserDetails(Type):
-    _toSchema = {'access': 'access', 'display_name': 'display-name', 'user': 'user'}
-    _toPy = {'access': 'access', 'display-name': 'display_name', 'user': 'user'}
-    def __init__(self, access=None, display_name=None, user=None, **unknown_fields):
-        '''
-        access : str
-        display_name : str
-        user : str
-        '''
-        self.access = access
-        self.display_name = display_name
-        self.user = user
-
-
-
-class OperatorProvisioningInfo(Type):
-    _toSchema = {'api_addresses': 'api-addresses', 'charm_storage': 'charm-storage', 'image_path': 'image-path', 'tags': 'tags', 'version': 'version'}
-    _toPy = {'api-addresses': 'api_addresses', 'charm-storage': 'charm_storage', 'image-path': 'image_path', 'tags': 'tags', 'version': 'version'}
-    def __init__(self, api_addresses=None, charm_storage=None, image_path=None, tags=None, version=None, **unknown_fields):
-        '''
-        api_addresses : typing.Sequence[str]
-        charm_storage : KubernetesFilesystemParams
-        image_path : str
-        tags : typing.Mapping[str, str]
-        version : Number
-        '''
-        self.api_addresses = api_addresses
-        self.charm_storage = KubernetesFilesystemParams.from_json(charm_storage) if charm_storage else None
-        self.image_path = image_path
-        self.tags = tags
-        self.version = Number.from_json(version) if version else None
-
-
-
-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[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[str]
-        '''
-        self.patterns = patterns
-
-
-
-class PayloadListResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~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[~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[~PhaseResult]
-        '''
-        self.results = [PhaseResult.from_json(o) for o in results or []]
-
-
-
-class PinApplicationResult(Type):
-    _toSchema = {'application_name': 'application-name', 'error': 'error'}
-    _toPy = {'application-name': 'application_name', 'error': 'error'}
-    def __init__(self, application_name=None, error=None, **unknown_fields):
-        '''
-        application_name : str
-        error : Error
-        '''
-        self.application_name = application_name
-        self.error = Error.from_json(error) if error else None
-
-
-
-class PinApplicationsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~PinApplicationResult]
-        '''
-        self.results = [PinApplicationResult.from_json(o) for o in results or []]
-
-
-
-class PinnedLeadershipResult(Type):
-    _toSchema = {'result': 'result'}
-    _toPy = {'result': 'result'}
-    def __init__(self, result=None, **unknown_fields):
-        '''
-        result : typing.Sequence[str]
-        '''
-        self.result = result
-
-
-
-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 ProfileChangeResult(Type):
-    _toSchema = {'error': 'error', 'new_profile_name': 'new-profile-name', 'old_profile_name': 'old-profile-name', 'profile': 'profile', 'subordinate': 'subordinate'}
-    _toPy = {'error': 'error', 'new-profile-name': 'new_profile_name', 'old-profile-name': 'old_profile_name', 'profile': 'profile', 'subordinate': 'subordinate'}
-    def __init__(self, error=None, new_profile_name=None, old_profile_name=None, profile=None, subordinate=None, **unknown_fields):
-        '''
-        error : Error
-        new_profile_name : str
-        old_profile_name : str
-        profile : CharmLXDProfile
-        subordinate : bool
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.new_profile_name = new_profile_name
-        self.old_profile_name = old_profile_name
-        self.profile = CharmLXDProfile.from_json(profile) if profile else None
-        self.subordinate = subordinate
-
-
-
-class ProfileChangeResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ProfileChangeResult]
-        '''
-        self.results = [ProfileChangeResult.from_json(o) for o in results or []]
-
-
-
-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[~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[~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[~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[str, typing.Any]
-        endpoint_bindings : typing.Mapping[str, str]
-        image_metadata : typing.Sequence[~CloudImageMetadata]
-        jobs : typing.Sequence[str]
-        placement : str
-        series : str
-        subnets_to_zones : typing.Sequence[str]
-        tags : typing.Mapping[str, str]
-        volumes : typing.Sequence[~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[~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[~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 QueryApplicationOffersResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ApplicationOfferAdminDetails]
-        '''
-        self.results = [ApplicationOfferAdminDetails.from_json(o) for o in results or []]
-
-
-
-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[~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[str, typing.Any]
-        '''
-        self.region_name = region_name
-        self.value = value
-
-
-
-class RegisterRemoteRelationArg(Type):
-    _toSchema = {'application_token': 'application-token', 'local_endpoint_name': 'local-endpoint-name', 'macaroons': 'macaroons', 'offer_uuid': 'offer-uuid', 'relation_token': 'relation-token', 'remote_endpoint': 'remote-endpoint', 'remote_space': 'remote-space', 'source_model_tag': 'source-model-tag'}
-    _toPy = {'application-token': 'application_token', 'local-endpoint-name': 'local_endpoint_name', 'macaroons': 'macaroons', 'offer-uuid': 'offer_uuid', 'relation-token': 'relation_token', 'remote-endpoint': 'remote_endpoint', 'remote-space': 'remote_space', 'source-model-tag': 'source_model_tag'}
-    def __init__(self, application_token=None, local_endpoint_name=None, macaroons=None, offer_uuid=None, relation_token=None, remote_endpoint=None, remote_space=None, source_model_tag=None, **unknown_fields):
-        '''
-        application_token : str
-        local_endpoint_name : str
-        macaroons : typing.Sequence[~Macaroon]
-        offer_uuid : str
-        relation_token : str
-        remote_endpoint : RemoteEndpoint
-        remote_space : RemoteSpace
-        source_model_tag : str
-        '''
-        self.application_token = application_token
-        self.local_endpoint_name = local_endpoint_name
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.offer_uuid = offer_uuid
-        self.relation_token = relation_token
-        self.remote_endpoint = RemoteEndpoint.from_json(remote_endpoint) if remote_endpoint else None
-        self.remote_space = RemoteSpace.from_json(remote_space) if remote_space else None
-        self.source_model_tag = source_model_tag
-
-
-
-class RegisterRemoteRelationArgs(Type):
-    _toSchema = {'relations': 'relations'}
-    _toPy = {'relations': 'relations'}
-    def __init__(self, relations=None, **unknown_fields):
-        '''
-        relations : typing.Sequence[~RegisterRemoteRelationArg]
-        '''
-        self.relations = [RegisterRemoteRelationArg.from_json(o) for o in relations or []]
-
-
-
-class RegisterRemoteRelationResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : RemoteRelationDetails
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = RemoteRelationDetails.from_json(result) if result else None
-
-
-
-class RegisterRemoteRelationResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RegisterRemoteRelationResult]
-        '''
-        self.results = [RegisterRemoteRelationResult.from_json(o) for o in results or []]
-
-
-
-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[str, ~RelationUnitChange]
-        departedunits : typing.Sequence[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[int]
-        '''
-        self.relation_ids = relation_ids
-
-
-
-class RelationLifeSuspendedStatusChange(Type):
-    _toSchema = {'key': 'key', 'life': 'life', 'suspended': 'suspended', 'suspended_reason': 'suspended-reason'}
-    _toPy = {'key': 'key', 'life': 'life', 'suspended': 'suspended', 'suspended-reason': 'suspended_reason'}
-    def __init__(self, key=None, life=None, suspended=None, suspended_reason=None, **unknown_fields):
-        '''
-        key : str
-        life : str
-        suspended : bool
-        suspended_reason : str
-        '''
-        self.key = key
-        self.life = life
-        self.suspended = suspended
-        self.suspended_reason = suspended_reason
-
-
-
-class RelationLifeSuspendedStatusWatchResult(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[~RelationLifeSuspendedStatusChange]
-        error : Error
-        watcher_id : str
-        '''
-        self.changes = [RelationLifeSuspendedStatusChange.from_json(o) for o in changes or []]
-        self.error = Error.from_json(error) if error else None
-        self.watcher_id = watcher_id
-
-
-
-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[~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[~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 RelationStatusArg(Type):
-    _toSchema = {'message': 'message', 'relation_id': 'relation-id', 'status': 'status', 'unit_tag': 'unit-tag'}
-    _toPy = {'message': 'message', 'relation-id': 'relation_id', 'status': 'status', 'unit-tag': 'unit_tag'}
-    def __init__(self, message=None, relation_id=None, status=None, unit_tag=None, **unknown_fields):
-        '''
-        message : str
-        relation_id : int
-        status : str
-        unit_tag : str
-        '''
-        self.message = message
-        self.relation_id = relation_id
-        self.status = status
-        self.unit_tag = unit_tag
-
-
-
-class RelationStatusArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~RelationStatusArg]
-        '''
-        self.args = [RelationStatusArg.from_json(o) for o in args or []]
-
-
-
-class RelationStatusWatchResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RelationLifeSuspendedStatusWatchResult]
-        '''
-        self.results = [RelationLifeSuspendedStatusWatchResult.from_json(o) for o in results or []]
-
-
-
-class RelationSuspendedArg(Type):
-    _toSchema = {'message': 'message', 'relation_id': 'relation-id', 'suspended': 'suspended'}
-    _toPy = {'message': 'message', 'relation-id': 'relation_id', 'suspended': 'suspended'}
-    def __init__(self, message=None, relation_id=None, suspended=None, **unknown_fields):
-        '''
-        message : str
-        relation_id : int
-        suspended : bool
-        '''
-        self.message = message
-        self.relation_id = relation_id
-        self.suspended = suspended
-
-
-
-class RelationSuspendedArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~RelationSuspendedArg]
-        '''
-        self.args = [RelationSuspendedArg.from_json(o) for o in args or []]
-
-
-
-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[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[~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[str, str]
-        unit : str
-        '''
-        self.relation = relation
-        self.settings = settings
-        self.unit = unit
-
-
-
-class RelationUnitStatus(Type):
-    _toSchema = {'in_scope': 'in-scope', 'relation_tag': 'relation-tag', 'suspended': 'suspended'}
-    _toPy = {'in-scope': 'in_scope', 'relation-tag': 'relation_tag', 'suspended': 'suspended'}
-    def __init__(self, in_scope=None, relation_tag=None, suspended=None, **unknown_fields):
-        '''
-        in_scope : bool
-        relation_tag : str
-        suspended : bool
-        '''
-        self.in_scope = in_scope
-        self.relation_tag = relation_tag
-        self.suspended = suspended
-
-
-
-class RelationUnitStatusResult(Type):
-    _toSchema = {'error': 'error', 'results': 'results'}
-    _toPy = {'error': 'error', 'results': 'results'}
-    def __init__(self, error=None, results=None, **unknown_fields):
-        '''
-        error : Error
-        results : typing.Sequence[~RelationUnitStatus]
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.results = [RelationUnitStatus.from_json(o) for o in results or []]
-
-
-
-class RelationUnitStatusResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RelationUnitStatusResult]
-        '''
-        self.results = [RelationUnitStatusResult.from_json(o) for o in results or []]
-
-
-
-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[~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[str, ~UnitSettings]
-        departed : typing.Sequence[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[~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[~RelationUnitsWatchResult]
-        '''
-        self.results = [RelationUnitsWatchResult.from_json(o) for o in results or []]
-
-
-
-class RemoteApplication(Type):
-    _toSchema = {'is_consumer_proxy': 'is-consumer-proxy', 'life': 'life', 'macaroon': 'macaroon', 'model_uuid': 'model-uuid', 'name': 'name', 'offer_uuid': 'offer-uuid', 'status': 'status'}
-    _toPy = {'is-consumer-proxy': 'is_consumer_proxy', 'life': 'life', 'macaroon': 'macaroon', 'model-uuid': 'model_uuid', 'name': 'name', 'offer-uuid': 'offer_uuid', 'status': 'status'}
-    def __init__(self, is_consumer_proxy=None, life=None, macaroon=None, model_uuid=None, name=None, offer_uuid=None, status=None, **unknown_fields):
-        '''
-        is_consumer_proxy : bool
-        life : str
-        macaroon : Macaroon
-        model_uuid : str
-        name : str
-        offer_uuid : str
-        status : str
-        '''
-        self.is_consumer_proxy = is_consumer_proxy
-        self.life = life
-        self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
-        self.model_uuid = model_uuid
-        self.name = name
-        self.offer_uuid = offer_uuid
-        self.status = status
-
-
-
-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[~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[~RemoteApplicationInfoResult]
-        '''
-        self.results = [RemoteApplicationInfoResult.from_json(o) for o in results or []]
-
-
-
-class RemoteApplicationResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : RemoteApplication
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = RemoteApplication.from_json(result) if result else None
-
-
-
-class RemoteApplicationResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RemoteApplicationResult]
-        '''
-        self.results = [RemoteApplicationResult.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[~RemoteEndpoint]
-        err : typing.Mapping[str, typing.Any]
-        life : str
-        relations : typing.Sequence[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 RemoteEntityArg(Type):
-    _toSchema = {'macaroons': 'macaroons', 'relation_token': 'relation-token'}
-    _toPy = {'macaroons': 'macaroons', 'relation-token': 'relation_token'}
-    def __init__(self, macaroons=None, relation_token=None, **unknown_fields):
-        '''
-        macaroons : typing.Sequence[~Macaroon]
-        relation_token : str
-        '''
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.relation_token = relation_token
-
-
-
-class RemoteEntityArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~RemoteEntityArg]
-        '''
-        self.args = [RemoteEntityArg.from_json(o) for o in args or []]
-
-
-
-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 RemoteEntityTokenArg(Type):
-    _toSchema = {'tag': 'tag', 'token': 'token'}
-    _toPy = {'tag': 'tag', 'token': 'token'}
-    def __init__(self, tag=None, token=None, **unknown_fields):
-        '''
-        tag : str
-        token : str
-        '''
-        self.tag = tag
-        self.token = token
-
-
-
-class RemoteEntityTokenArgs(Type):
-    _toSchema = {'args': 'Args'}
-    _toPy = {'Args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~RemoteEntityTokenArg]
-        '''
-        self.args = [RemoteEntityTokenArg.from_json(o) for o in args or []]
-
-
-
-class RemoteRelation(Type):
-    _toSchema = {'application_name': 'application-name', 'endpoint': 'endpoint', 'id_': 'id', 'key': 'key', 'life': 'life', 'remote_application_name': 'remote-application-name', 'remote_endpoint_name': 'remote-endpoint-name', 'source_model_uuid': 'source-model-uuid', 'suspended': 'suspended'}
-    _toPy = {'application-name': 'application_name', 'endpoint': 'endpoint', 'id': 'id_', 'key': 'key', 'life': 'life', 'remote-application-name': 'remote_application_name', 'remote-endpoint-name': 'remote_endpoint_name', 'source-model-uuid': 'source_model_uuid', 'suspended': 'suspended'}
-    def __init__(self, application_name=None, endpoint=None, id_=None, key=None, life=None, remote_application_name=None, remote_endpoint_name=None, source_model_uuid=None, suspended=None, **unknown_fields):
-        '''
-        application_name : str
-        endpoint : RemoteEndpoint
-        id_ : int
-        key : str
-        life : str
-        remote_application_name : str
-        remote_endpoint_name : str
-        source_model_uuid : str
-        suspended : bool
-        '''
-        self.application_name = application_name
-        self.endpoint = RemoteEndpoint.from_json(endpoint) if endpoint else None
-        self.id_ = id_
-        self.key = key
-        self.life = life
-        self.remote_application_name = remote_application_name
-        self.remote_endpoint_name = remote_endpoint_name
-        self.source_model_uuid = source_model_uuid
-        self.suspended = suspended
-
-
-
-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[str, ~RemoteRelationUnitChange]
-        departed_units : typing.Sequence[str]
-        id_ : int
-        life : str
-        '''
-        self.changed_units = changed_units
-        self.departed_units = departed_units
-        self.id_ = id_
-        self.life = life
-
-
-
-class RemoteRelationChangeEvent(Type):
-    _toSchema = {'application_token': 'application-token', 'changed_units': 'changed-units', 'departed_units': 'departed-units', 'force_cleanup': 'force-cleanup', 'life': 'life', 'macaroons': 'macaroons', 'relation_token': 'relation-token', 'suspended': 'suspended', 'suspended_reason': 'suspended-reason'}
-    _toPy = {'application-token': 'application_token', 'changed-units': 'changed_units', 'departed-units': 'departed_units', 'force-cleanup': 'force_cleanup', 'life': 'life', 'macaroons': 'macaroons', 'relation-token': 'relation_token', 'suspended': 'suspended', 'suspended-reason': 'suspended_reason'}
-    def __init__(self, application_token=None, changed_units=None, departed_units=None, force_cleanup=None, life=None, macaroons=None, relation_token=None, suspended=None, suspended_reason=None, **unknown_fields):
-        '''
-        application_token : str
-        changed_units : typing.Sequence[~RemoteRelationUnitChange]
-        departed_units : typing.Sequence[int]
-        force_cleanup : bool
-        life : str
-        macaroons : typing.Sequence[~Macaroon]
-        relation_token : str
-        suspended : bool
-        suspended_reason : str
-        '''
-        self.application_token = application_token
-        self.changed_units = [RemoteRelationUnitChange.from_json(o) for o in changed_units or []]
-        self.departed_units = departed_units
-        self.force_cleanup = force_cleanup
-        self.life = life
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.relation_token = relation_token
-        self.suspended = suspended
-        self.suspended_reason = suspended_reason
-
-
-
-class RemoteRelationDetails(Type):
-    _toSchema = {'macaroon': 'macaroon', 'relation_token': 'relation-token'}
-    _toPy = {'macaroon': 'macaroon', 'relation-token': 'relation_token'}
-    def __init__(self, macaroon=None, relation_token=None, **unknown_fields):
-        '''
-        macaroon : Macaroon
-        relation_token : str
-        '''
-        self.macaroon = Macaroon.from_json(macaroon) if macaroon else None
-        self.relation_token = relation_token
-
-
-
-class RemoteRelationResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : RemoteRelation
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = RemoteRelation.from_json(result) if result else None
-
-
-
-class RemoteRelationResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RemoteRelationResult]
-        '''
-        self.results = [RemoteRelationResult.from_json(o) for o in results or []]
-
-
-
-class RemoteRelationUnit(Type):
-    _toSchema = {'macaroons': 'macaroons', 'relation_token': 'relation-token', 'unit': 'unit'}
-    _toPy = {'macaroons': 'macaroons', 'relation-token': 'relation_token', 'unit': 'unit'}
-    def __init__(self, macaroons=None, relation_token=None, unit=None, **unknown_fields):
-        '''
-        macaroons : typing.Sequence[~Macaroon]
-        relation_token : str
-        unit : str
-        '''
-        self.macaroons = [Macaroon.from_json(o) for o in macaroons or []]
-        self.relation_token = relation_token
-        self.unit = unit
-
-
-
-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[str, typing.Any]
-        unit_id : RemoteEntityId
-        '''
-        self.settings = settings
-        self.unit_id = RemoteEntityId.from_json(unit_id) if unit_id else None
-
-
-
-class RemoteRelationUnits(Type):
-    _toSchema = {'relation_units': 'relation-units'}
-    _toPy = {'relation-units': 'relation_units'}
-    def __init__(self, relation_units=None, **unknown_fields):
-        '''
-        relation_units : typing.Sequence[~RemoteRelationUnit]
-        '''
-        self.relation_units = [RemoteRelationUnit.from_json(o) for o in relation_units or []]
-
-
-
-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[~RemoteRelationChange]
-        initial : bool
-        removed : typing.Sequence[int]
-        '''
-        self.changed = [RemoteRelationChange.from_json(o) for o in changed or []]
-        self.initial = initial
-        self.removed = removed
-
-
-
-class RemoteRelationsChanges(Type):
-    _toSchema = {'changes': 'changes'}
-    _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None, **unknown_fields):
-        '''
-        changes : typing.Sequence[~RemoteRelationChangeEvent]
-        '''
-        self.changes = [RemoteRelationChangeEvent.from_json(o) for o in changes or []]
-
-
-
-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[str, typing.Any]
-        provider_id : str
-        subnets : typing.Sequence[~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 RemoveFilesystemParams(Type):
-    _toSchema = {'destroy': 'destroy', 'filesystem_id': 'filesystem-id', 'provider': 'provider'}
-    _toPy = {'destroy': 'destroy', 'filesystem-id': 'filesystem_id', 'provider': 'provider'}
-    def __init__(self, destroy=None, filesystem_id=None, provider=None, **unknown_fields):
-        '''
-        destroy : bool
-        filesystem_id : str
-        provider : str
-        '''
-        self.destroy = destroy
-        self.filesystem_id = filesystem_id
-        self.provider = provider
-
-
-
-class RemoveFilesystemParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : RemoveFilesystemParams
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = RemoveFilesystemParams.from_json(result) if result else None
-
-
-
-class RemoveFilesystemParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RemoveFilesystemParamsResult]
-        '''
-        self.results = [RemoveFilesystemParamsResult.from_json(o) for o in results or []]
-
-
-
-class RemoveStorage(Type):
-    _toSchema = {'storage': 'storage'}
-    _toPy = {'storage': 'storage'}
-    def __init__(self, storage=None, **unknown_fields):
-        '''
-        storage : typing.Sequence[~RemoveStorageInstance]
-        '''
-        self.storage = [RemoveStorageInstance.from_json(o) for o in storage or []]
-
-
-
-class RemoveStorageInstance(Type):
-    _toSchema = {'destroy_attachments': 'destroy-attachments', 'destroy_storage': 'destroy-storage', 'tag': 'tag'}
-    _toPy = {'destroy-attachments': 'destroy_attachments', 'destroy-storage': 'destroy_storage', 'tag': 'tag'}
-    def __init__(self, destroy_attachments=None, destroy_storage=None, tag=None, **unknown_fields):
-        '''
-        destroy_attachments : bool
-        destroy_storage : bool
-        tag : str
-        '''
-        self.destroy_attachments = destroy_attachments
-        self.destroy_storage = destroy_storage
-        self.tag = tag
-
-
-
-class RemoveVolumeParams(Type):
-    _toSchema = {'destroy': 'destroy', 'provider': 'provider', 'volume_id': 'volume-id'}
-    _toPy = {'destroy': 'destroy', 'provider': 'provider', 'volume-id': 'volume_id'}
-    def __init__(self, destroy=None, provider=None, volume_id=None, **unknown_fields):
-        '''
-        destroy : bool
-        provider : str
-        volume_id : str
-        '''
-        self.destroy = destroy
-        self.provider = provider
-        self.volume_id = volume_id
-
-
-
-class RemoveVolumeParamsResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : RemoveVolumeParams
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = RemoveVolumeParams.from_json(result) if result else None
-
-
-
-class RemoveVolumeParamsResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~RemoveVolumeParamsResult]
-        '''
-        self.results = [RemoveVolumeParamsResult.from_json(o) for o in results or []]
-
-
-
-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[~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[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[~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[~CharmResource]
-        resources : typing.Sequence[~Resource]
-        unit_resources : typing.Sequence[~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[~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[~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[~RetryStrategyResult]
-        '''
-        self.results = [RetryStrategyResult.from_json(o) for o in results or []]
-
-
-
-class RevokeCredentialArg(Type):
-    _toSchema = {'force': 'force', 'tag': 'tag'}
-    _toPy = {'force': 'force', 'tag': 'tag'}
-    def __init__(self, force=None, tag=None, **unknown_fields):
-        '''
-        force : bool
-        tag : str
-        '''
-        self.force = force
-        self.tag = tag
-
-
-
-class RevokeCredentialArgs(Type):
-    _toSchema = {'credentials': 'credentials'}
-    _toPy = {'credentials': 'credentials'}
-    def __init__(self, credentials=None, **unknown_fields):
-        '''
-        credentials : typing.Sequence[~RevokeCredentialArg]
-        '''
-        self.credentials = [RevokeCredentialArg.from_json(o) for o in credentials 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[str]
-        commands : str
-        machines : typing.Sequence[str]
-        timeout : int
-        units : typing.Sequence[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[~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[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[~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[~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[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[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[~SSHPublicKeysResult]
-        '''
-        self.results = [SSHPublicKeysResult.from_json(o) for o in results or []]
-
-
-
-class ScaleApplicationInfo(Type):
-    _toSchema = {'num_units': 'num-units'}
-    _toPy = {'num-units': 'num_units'}
-    def __init__(self, num_units=None, **unknown_fields):
-        '''
-        num_units : int
-        '''
-        self.num_units = num_units
-
-
-
-class ScaleApplicationParams(Type):
-    _toSchema = {'application_tag': 'application-tag', 'scale': 'scale', 'scale_change': 'scale-change'}
-    _toPy = {'application-tag': 'application_tag', 'scale': 'scale', 'scale-change': 'scale_change'}
-    def __init__(self, application_tag=None, scale=None, scale_change=None, **unknown_fields):
-        '''
-        application_tag : str
-        scale : int
-        scale_change : int
-        '''
-        self.application_tag = application_tag
-        self.scale = scale
-        self.scale_change = scale_change
-
-
-
-class ScaleApplicationResult(Type):
-    _toSchema = {'error': 'error', 'info': 'info'}
-    _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None, **unknown_fields):
-        '''
-        error : Error
-        info : ScaleApplicationInfo
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.info = ScaleApplicationInfo.from_json(info) if info else None
-
-
-
-class ScaleApplicationResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~ScaleApplicationResult]
-        '''
-        self.results = [ScaleApplicationResult.from_json(o) for o in results or []]
-
-
-
-class ScaleApplicationsParams(Type):
-    _toSchema = {'applications': 'applications'}
-    _toPy = {'applications': 'applications'}
-    def __init__(self, applications=None, **unknown_fields):
-        '''
-        applications : typing.Sequence[~ScaleApplicationParams]
-        '''
-        self.applications = [ScaleApplicationParams.from_json(o) for o in applications 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[int]
-        charms : typing.Sequence[str]
-        tools : typing.Sequence[~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[str, ~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 SetExternalControllerInfoParams(Type):
-    _toSchema = {'info': 'info'}
-    _toPy = {'info': 'info'}
-    def __init__(self, info=None, **unknown_fields):
-        '''
-        info : ExternalControllerInfo
-        '''
-        self.info = ExternalControllerInfo.from_json(info) if info else None
-
-
-
-class SetExternalControllersInfoParams(Type):
-    _toSchema = {'controllers': 'controllers'}
-    _toPy = {'controllers': 'controllers'}
-    def __init__(self, controllers=None, **unknown_fields):
-        '''
-        controllers : typing.Sequence[~SetExternalControllerInfoParams]
-        '''
-        self.controllers = [SetExternalControllerInfoParams.from_json(o) for o in controllers or []]
-
-
-
-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[~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[~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[~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[~ModelDefaultValues]
-        '''
-        self.config = [ModelDefaultValues.from_json(o) for o in config or []]
-
-
-
-class SetModelEnvironVersion(Type):
-    _toSchema = {'model_tag': 'model-tag', 'version': 'version'}
-    _toPy = {'model-tag': 'model_tag', 'version': 'version'}
-    def __init__(self, model_tag=None, version=None, **unknown_fields):
-        '''
-        model_tag : str
-        version : int
-        '''
-        self.model_tag = model_tag
-        self.version = version
-
-
-
-class SetModelEnvironVersions(Type):
-    _toSchema = {'models': 'models'}
-    _toPy = {'models': 'models'}
-    def __init__(self, models=None, **unknown_fields):
-        '''
-        models : typing.Sequence[~SetModelEnvironVersion]
-        '''
-        self.models = [SetModelEnvironVersion.from_json(o) for o in models 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[~SetPayloadStatusArg]
-        '''
-        self.args = [SetPayloadStatusArg.from_json(o) for o in args or []]
-
-
-
-class SetPodSpecParams(Type):
-    _toSchema = {'specs': 'specs'}
-    _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None, **unknown_fields):
-        '''
-        specs : typing.Sequence[~EntityString]
-        '''
-        self.specs = [EntityString.from_json(o) for o in specs or []]
-
-
-
-class SetProfileArg(Type):
-    _toSchema = {'entity': 'entity', 'profiles': 'profiles'}
-    _toPy = {'entity': 'entity', 'profiles': 'profiles'}
-    def __init__(self, entity=None, profiles=None, **unknown_fields):
-        '''
-        entity : Entity
-        profiles : typing.Sequence[str]
-        '''
-        self.entity = Entity.from_json(entity) if entity else None
-        self.profiles = profiles
-
-
-
-class SetProfileArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~SetProfileArg]
-        '''
-        self.args = [SetProfileArg.from_json(o) for o in args or []]
-
-
-
-class SetProfileUpgradeCompleteArg(Type):
-    _toSchema = {'entity': 'entity', 'message': 'message'}
-    _toPy = {'entity': 'entity', 'message': 'message'}
-    def __init__(self, entity=None, message=None, **unknown_fields):
-        '''
-        entity : Entity
-        message : str
-        '''
-        self.entity = Entity.from_json(entity) if entity else None
-        self.message = message
-
-
-
-class SetProfileUpgradeCompleteArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~SetProfileUpgradeCompleteArg]
-        '''
-        self.args = [SetProfileUpgradeCompleteArg.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[~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[~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[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[~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[~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[~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[~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[~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[~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[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[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[~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[~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[~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[~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[str, ~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[~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[~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[~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[~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[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[str]
-        providers : typing.Sequence[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[~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[~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[~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[~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[~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[~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[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[~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[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[~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[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 TaggedCredential(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 TaggedCredentials(Type):
-    _toSchema = {'credentials': 'credentials'}
-    _toPy = {'credentials': 'credentials'}
-    def __init__(self, credentials=None, **unknown_fields):
-        '''
-        credentials : typing.Sequence[~TaggedCredential]
-        '''
-        self.credentials = [TaggedCredential.from_json(o) for o in credentials or []]
-
-
-
-class TokenResult(Type):
-    _toSchema = {'error': 'error', 'token': 'token'}
-    _toPy = {'error': 'error', 'token': 'token'}
-    def __init__(self, error=None, token=None, **unknown_fields):
-        '''
-        error : Error
-        token : str
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.token = token
-
-
-
-class TokenResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~TokenResult]
-        '''
-        self.results = [TokenResult.from_json(o) for o in results or []]
-
-
-
-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[~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[~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[~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[~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[~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[~UnitNetworkConfigResult]
-        '''
-        self.results = [UnitNetworkConfigResult.from_json(o) for o in results or []]
-
-
-
-class UnitRefreshResult(Type):
-    _toSchema = {'error': 'Error', 'life': 'Life', 'resolved': 'Resolved'}
-    _toPy = {'Error': 'error', 'Life': 'life', 'Resolved': 'resolved'}
-    def __init__(self, error=None, life=None, resolved=None, **unknown_fields):
-        '''
-        error : Error
-        life : str
-        resolved : str
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.life = life
-        self.resolved = resolved
-
-
-
-class UnitRefreshResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~UnitRefreshResult]
-        '''
-        self.results = [UnitRefreshResult.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[str, int]
-        resources : typing.Sequence[~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[~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[str]
-        public_address : str
-        subordinates : typing.Mapping[str, ~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[~UnitNetworkConfig]
-        '''
-        self.args = [UnitNetworkConfig.from_json(o) for o in args or []]
-
-
-
-class UnitsResolved(Type):
-    _toSchema = {'all_': 'all', 'retry': 'retry', 'tags': 'tags'}
-    _toPy = {'all': 'all_', 'retry': 'retry', 'tags': 'tags'}
-    def __init__(self, all_=None, retry=None, tags=None, **unknown_fields):
-        '''
-        all_ : bool
-        retry : bool
-        tags : Entities
-        '''
-        self.all_ = all_
-        self.retry = retry
-        self.tags = Entities.from_json(tags) if tags else None
-
-
-
-class UnsetModelDefaults(Type):
-    _toSchema = {'keys': 'keys'}
-    _toPy = {'keys': 'keys'}
-    def __init__(self, keys=None, **unknown_fields):
-        '''
-        keys : typing.Sequence[~ModelUnsetKeys]
-        '''
-        self.keys = [ModelUnsetKeys.from_json(o) for o in keys or []]
-
-
-
-class UpdateApplicationServiceArg(Type):
-    _toSchema = {'addresses': 'addresses', 'application_tag': 'application-tag', 'provider_id': 'provider-id'}
-    _toPy = {'addresses': 'addresses', 'application-tag': 'application_tag', 'provider-id': 'provider_id'}
-    def __init__(self, addresses=None, application_tag=None, provider_id=None, **unknown_fields):
-        '''
-        addresses : typing.Sequence[~Address]
-        application_tag : str
-        provider_id : str
-        '''
-        self.addresses = [Address.from_json(o) for o in addresses or []]
-        self.application_tag = application_tag
-        self.provider_id = provider_id
-
-
-
-class UpdateApplicationServiceArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~UpdateApplicationServiceArg]
-        '''
-        self.args = [UpdateApplicationServiceArg.from_json(o) for o in args or []]
-
-
-
-class UpdateApplicationUnitArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~UpdateApplicationUnits]
-        '''
-        self.args = [UpdateApplicationUnits.from_json(o) for o in args or []]
-
-
-
-class UpdateApplicationUnits(Type):
-    _toSchema = {'application_tag': 'application-tag', 'units': 'units'}
-    _toPy = {'application-tag': 'application_tag', 'units': 'units'}
-    def __init__(self, application_tag=None, units=None, **unknown_fields):
-        '''
-        application_tag : str
-        units : typing.Sequence[~ApplicationUnitParams]
-        '''
-        self.application_tag = application_tag
-        self.units = [ApplicationUnitParams.from_json(o) for o in units 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[~UpdateCloudCredential]
-        '''
-        self.credentials = [UpdateCloudCredential.from_json(o) for o in credentials or []]
-
-
-
-class UpdateCredentialArgs(Type):
-    _toSchema = {'credentials': 'credentials', 'force': 'force'}
-    _toPy = {'credentials': 'credentials', 'force': 'force'}
-    def __init__(self, credentials=None, force=None, **unknown_fields):
-        '''
-        credentials : typing.Sequence[~TaggedCredential]
-        force : bool
-        '''
-        self.credentials = [TaggedCredential.from_json(o) for o in credentials or []]
-        self.force = force
-
-
-
-class UpdateCredentialModelResult(Type):
-    _toSchema = {'errors': 'errors', 'name': 'name', 'uuid': 'uuid'}
-    _toPy = {'errors': 'errors', 'name': 'name', 'uuid': 'uuid'}
-    def __init__(self, errors=None, name=None, uuid=None, **unknown_fields):
-        '''
-        errors : typing.Sequence[~ErrorResult]
-        name : str
-        uuid : str
-        '''
-        self.errors = [ErrorResult.from_json(o) for o in errors or []]
-        self.name = name
-        self.uuid = uuid
-
-
-
-class UpdateCredentialResult(Type):
-    _toSchema = {'error': 'error', 'models': 'models', 'tag': 'tag'}
-    _toPy = {'error': 'error', 'models': 'models', 'tag': 'tag'}
-    def __init__(self, error=None, models=None, tag=None, **unknown_fields):
-        '''
-        error : Error
-        models : typing.Sequence[~UpdateCredentialModelResult]
-        tag : str
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.models = [UpdateCredentialModelResult.from_json(o) for o in models or []]
-        self.tag = tag
-
-
-
-class UpdateCredentialResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~UpdateCredentialResult]
-        '''
-        self.results = [UpdateCredentialResult.from_json(o) for o in results or []]
-
-
-
-class UpdateSeriesArg(Type):
-    _toSchema = {'force': 'force', 'series': 'series', 'tag': 'tag'}
-    _toPy = {'force': 'force', 'series': 'series', 'tag': 'tag'}
-    def __init__(self, force=None, series=None, tag=None, **unknown_fields):
-        '''
-        force : bool
-        series : str
-        tag : Entity
-        '''
-        self.force = force
-        self.series = series
-        self.tag = Entity.from_json(tag) if tag else None
-
-
-
-class UpdateSeriesArgs(Type):
-    _toSchema = {'args': 'args'}
-    _toPy = {'args': 'args'}
-    def __init__(self, args=None, **unknown_fields):
-        '''
-        args : typing.Sequence[~UpdateSeriesArg]
-        '''
-        self.args = [UpdateSeriesArg.from_json(o) for o in args 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 UpgradeSeriesNotificationParam(Type):
-    _toSchema = {'entity': 'entity', 'watcher_id': 'watcher-id'}
-    _toPy = {'entity': 'entity', 'watcher-id': 'watcher_id'}
-    def __init__(self, entity=None, watcher_id=None, **unknown_fields):
-        '''
-        entity : Entity
-        watcher_id : str
-        '''
-        self.entity = Entity.from_json(entity) if entity else None
-        self.watcher_id = watcher_id
-
-
-
-class UpgradeSeriesNotificationParams(Type):
-    _toSchema = {'params': 'params'}
-    _toPy = {'params': 'params'}
-    def __init__(self, params=None, **unknown_fields):
-        '''
-        params : typing.Sequence[~UpgradeSeriesNotificationParam]
-        '''
-        self.params = [UpgradeSeriesNotificationParam.from_json(o) for o in params or []]
-
-
-
-class UpgradeSeriesStartUnitCompletionParam(Type):
-    _toSchema = {'entities': 'entities', 'message': 'message'}
-    _toPy = {'entities': 'entities', 'message': 'message'}
-    def __init__(self, entities=None, message=None, **unknown_fields):
-        '''
-        entities : typing.Sequence[~Entity]
-        message : str
-        '''
-        self.entities = [Entity.from_json(o) for o in entities or []]
-        self.message = message
-
-
-
-class UpgradeSeriesStatusParam(Type):
-    _toSchema = {'entity': 'entity', 'message': 'message', 'status': 'status'}
-    _toPy = {'entity': 'entity', 'message': 'message', 'status': 'status'}
-    def __init__(self, entity=None, message=None, status=None, **unknown_fields):
-        '''
-        entity : Entity
-        message : str
-        status : str
-        '''
-        self.entity = Entity.from_json(entity) if entity else None
-        self.message = message
-        self.status = status
-
-
-
-class UpgradeSeriesStatusParams(Type):
-    _toSchema = {'params': 'params'}
-    _toPy = {'params': 'params'}
-    def __init__(self, params=None, **unknown_fields):
-        '''
-        params : typing.Sequence[~UpgradeSeriesStatusParam]
-        '''
-        self.params = [UpgradeSeriesStatusParam.from_json(o) for o in params or []]
-
-
-
-class UpgradeSeriesStatusResult(Type):
-    _toSchema = {'error': 'error', 'status': 'status'}
-    _toPy = {'error': 'error', 'status': 'status'}
-    def __init__(self, error=None, status=None, **unknown_fields):
-        '''
-        error : Error
-        status : str
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.status = status
-
-
-
-class UpgradeSeriesStatusResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~UpgradeSeriesStatusResult]
-        '''
-        self.results = [UpgradeSeriesStatusResult.from_json(o) for o in results or []]
-
-
-
-class UpgradeSeriesUnitsResult(Type):
-    _toSchema = {'error': 'error', 'unit_names': 'unit-names'}
-    _toPy = {'error': 'error', 'unit-names': 'unit_names'}
-    def __init__(self, error=None, unit_names=None, **unknown_fields):
-        '''
-        error : Error
-        unit_names : typing.Sequence[str]
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.unit_names = unit_names
-
-
-
-class UpgradeSeriesUnitsResults(Type):
-    _toSchema = {'results': 'Results'}
-    _toPy = {'Results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~UpgradeSeriesUnitsResult]
-        '''
-        self.results = [UpgradeSeriesUnitsResult.from_json(o) for o in results or []]
-
-
-
-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[~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[~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[~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[~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[~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[str]
-        tags : typing.Sequence[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[~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[~VolumeAttachmentParamsResult]
-        '''
-        self.results = [VolumeAttachmentParamsResult.from_json(o) for o in results or []]
-
-
-
-class VolumeAttachmentPlan(Type):
-    _toSchema = {'block_device': 'block-device', 'life': 'life', 'machine_tag': 'machine-tag', 'plan_info': 'plan-info', 'volume_tag': 'volume-tag'}
-    _toPy = {'block-device': 'block_device', 'life': 'life', 'machine-tag': 'machine_tag', 'plan-info': 'plan_info', 'volume-tag': 'volume_tag'}
-    def __init__(self, block_device=None, life=None, machine_tag=None, plan_info=None, volume_tag=None, **unknown_fields):
-        '''
-        block_device : BlockDevice
-        life : str
-        machine_tag : str
-        plan_info : VolumeAttachmentPlanInfo
-        volume_tag : str
-        '''
-        self.block_device = BlockDevice.from_json(block_device) if block_device else None
-        self.life = life
-        self.machine_tag = machine_tag
-        self.plan_info = VolumeAttachmentPlanInfo.from_json(plan_info) if plan_info else None
-        self.volume_tag = volume_tag
-
-
-
-class VolumeAttachmentPlanInfo(Type):
-    _toSchema = {'device_attributes': 'device-attributes', 'device_type': 'device-type'}
-    _toPy = {'device-attributes': 'device_attributes', 'device-type': 'device_type'}
-    def __init__(self, device_attributes=None, device_type=None, **unknown_fields):
-        '''
-        device_attributes : typing.Mapping[str, str]
-        device_type : str
-        '''
-        self.device_attributes = device_attributes
-        self.device_type = device_type
-
-
-
-class VolumeAttachmentPlanResult(Type):
-    _toSchema = {'error': 'error', 'result': 'result'}
-    _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None, **unknown_fields):
-        '''
-        error : Error
-        result : VolumeAttachmentPlan
-        '''
-        self.error = Error.from_json(error) if error else None
-        self.result = VolumeAttachmentPlan.from_json(result) if result else None
-
-
-
-class VolumeAttachmentPlanResults(Type):
-    _toSchema = {'results': 'results'}
-    _toPy = {'results': 'results'}
-    def __init__(self, results=None, **unknown_fields):
-        '''
-        results : typing.Sequence[~VolumeAttachmentPlanResult]
-        '''
-        self.results = [VolumeAttachmentPlanResult.from_json(o) for o in results or []]
-
-
-
-class VolumeAttachmentPlans(Type):
-    _toSchema = {'volume_plans': 'volume-plans'}
-    _toPy = {'volume-plans': 'volume_plans'}
-    def __init__(self, volume_plans=None, **unknown_fields):
-        '''
-        volume_plans : typing.Sequence[~VolumeAttachmentPlan]
-        '''
-        self.volume_plans = [VolumeAttachmentPlan.from_json(o) for o in volume_plans 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[~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[~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[str, ~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[~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[~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[str]
-        '''
-        self.machines = machines
-
-
-
-class VolumeFilters(Type):
-    _toSchema = {'filters': 'filters'}
-    _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None, **unknown_fields):
-        '''
-        filters : typing.Sequence[~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[str, typing.Any]
-        provider : str
-        size : int
-        tags : typing.Mapping[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[~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[~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[~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[~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[~ZoneResult]
-        '''
-        self.results = [ZoneResult.from_json(o) for o in results or []]
diff --git a/modules/libjuju/juju/client/client.py b/modules/libjuju/juju/client/client.py
deleted file mode 100644
index 2721d07..0000000
--- a/modules/libjuju/juju/client/client.py
+++ /dev/null
@@ -1,33 +0,0 @@
-'''Replace auto-generated classes with our own, where necessary.
-'''
-
-from . import _client, _definitions, overrides  # isort:skip
-
-for o in overrides.__all__:
-    if "Facade" not 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<version> 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, isort:skip
diff --git a/modules/libjuju/juju/client/codegen.py b/modules/libjuju/juju/client/codegen.py
deleted file mode 100644
index f8a792a..0000000
--- a/modules/libjuju/juju/client/codegen.py
+++ /dev/null
@@ -1,52 +0,0 @@
-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 --git a/modules/libjuju/juju/client/connection.py b/modules/libjuju/juju/client/connection.py
deleted file mode 100644
index f2150b7..0000000
--- a/modules/libjuju/juju/client/connection.py
+++ /dev/null
@@ -1,601 +0,0 @@
-import asyncio
-import base64
-import json
-import logging
-import ssl
-import urllib.request
-import weakref
-from concurrent.futures import CancelledError
-from http.client import HTTPSConnection
-
-import macaroonbakery.httpbakery as httpbakery
-import macaroonbakery.bakery as bakery
-import websockets
-from juju import errors, tag, utils
-from juju.client import client
-from juju.utils import IdQueue
-
-log = logging.getLogger('juju.client.connection')
-
-
-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 inspection 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)
-
-    @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)
-        stopped = connection._receiver_task.stopped.is_set()
-        if stopped 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)
-
-    Note: Any connection method or constructor can accept an optional `loop`
-    argument to override the default event loop from `asyncio.get_event_loop`.
-    """
-
-    MAX_FRAME_SIZE = 2**22
-    "Maximum size for a single frame.  Defaults to 4MB."
-
-    @classmethod
-    async def connect(
-            cls,
-            endpoint=None,
-            uuid=None,
-            username=None,
-            password=None,
-            cacert=None,
-            bakery_client=None,
-            loop=None,
-            max_frame_size=None,
-            retries=3,
-            retry_backoff=10,
-    ):
-        """Connect to the websocket.
-
-        If uuid is None, the connection will be to the controller. Otherwise it
-        will be to the model.
-
-        :param str endpoint: The hostname:port of the controller to connect to.
-        :param str uuid: The model UUID to connect to (None for a
-            controller-only connection).
-        :param str username: The username for controller-local users (or None
-            to use macaroon-based login.)
-        :param str password: The password for controller-local users.
-        :param str cacert: The CA certificate of the controller
-            (PEM formatted).
-        :param httpbakery.Client bakery_client: The macaroon bakery client to
-            to use when performing macaroon-based login. Macaroon tokens
-            acquired when logging will be saved to bakery_client.cookies.
-            If this is None, a default bakery_client will be used.
-        :param asyncio.BaseEventLoop loop: The event loop to use for async
-            operations.
-        :param int max_frame_size: The maximum websocket frame size to allow.
-        :param int retries: When connecting or reconnecting, and all endpoints
-            fail, how many times to retry the connection before giving up.
-        :param int retry_backoff: Number of seconds to increase the wait
-            between connection retry attempts (a backoff of 10 with 3 retries
-            would wait 10s, 20s, and 30s).
-        """
-        self = cls()
-        if endpoint is None:
-            raise ValueError('no endpoint provided')
-        self.uuid = uuid
-        if bakery_client is None:
-            bakery_client = httpbakery.Client()
-        self.bakery_client = bakery_client
-        if username and '@' in username and not username.endswith('@local'):
-            # We're trying to log in as an external user - we need to use
-            # macaroon authentication with no username or password.
-            if password is not None:
-                raise errors.JujuAuthError('cannot log in as external '
-                                           'user with a password')
-            username = None
-        self.usertag = tag.user(username)
-        self.password = password
-        self.loop = loop or asyncio.get_event_loop()
-
-        self.__request_id__ = 0
-
-        # The following instance variables are initialized by the
-        # _connect_with_redirect method, but create them here
-        # as a reminder that they will exist.
-        self.addr = None
-        self.ws = None
-        self.endpoint = None
-        self.cacert = None
-        self.info = None
-
-        # Create that _Task objects but don't start the tasks yet.
-        self._pinger_task = _Task(self._pinger, self.loop)
-        self._receiver_task = _Task(self._receiver, self.loop)
-
-        self._retries = retries
-        self._retry_backoff = retry_backoff
-
-        self.facades = {}
-        self.messages = IdQueue(loop=self.loop)
-        self.monitor = Monitor(connection=self)
-        if max_frame_size is None:
-            max_frame_size = self.MAX_FRAME_SIZE
-        self.max_frame_size = max_frame_size
-        await self._connect_with_redirect([(endpoint, cacert)])
-        return self
-
-    @property
-    def username(self):
-        if not self.usertag:
-            return None
-        return self.usertag[len('user-'):]
-
-    @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, endpoint, cacert):
-        if self.uuid:
-            url = "wss://{}/model/{}/api".format(endpoint, self.uuid)
-        else:
-            url = "wss://{}/api".format(endpoint)
-
-        return (await websockets.connect(
-            url,
-            ssl=self._get_ssl(cacert),
-            loop=self.loop,
-            max_size=self.max_frame_size,
-        ), url, endpoint, cacert)
-
-    async def close(self):
-        if not self.ws:
-            return
-        self.monitor.close_called.set()
-        await self._pinger_task.stopped.wait()
-        await self._receiver_task.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
-
-    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
-        except websockets.exceptions.ConnectionClosed:
-            # The connection has closed - we can't do anything
-            # more until the connection is restarted.
-            log.debug('ping failed because of closed connection')
-            pass
-
-    async def rpc(self, msg, encoder=None):
-        '''Make an RPC to the API. The message is encoded as JSON
-        using the given encoder if any.
-        :param msg: Parameters for the call (will be encoded as JSON).
-        :param encoder: Encoder to be used when encoding the message.
-        :return: The result of the call.
-        :raises JujuAPIError: When there's an error returned.
-        :raises JujuError:
-        '''
-        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)
-        log.debug('connection {} -> {}'.format(id(self), outgoing))
-        for attempt in range(3):
-            if self.monitor.status == Monitor.DISCONNECTED:
-                # closed cleanly; shouldn't try to reconnect
-                raise websockets.exceptions.ConnectionClosed(
-                    0, 'websocket closed')
-            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)
-                if self.monitor.status != Monitor.CONNECTED:
-                    # reconnect failed; abort and shutdown
-                    log.error('RPC: Automatic reconnect failed')
-                    raise
-        result = await self._recv(msg['request-id'])
-        log.debug('connection {} <- {}'.format(id(self), result))
-
-        if not result:
-            return result
-
-        if 'error' in result:
-            # API Error Response
-            raise errors.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.
-            # TODO This loses the results that might have succeeded.
-            # Perhaps JujuError should return all the results including
-            # errors, or perhaps a keyword parameter to the rpc method
-            # could be added to trigger this behaviour.
-            err_results = []
-            for res in result['response']['results']:
-                if res.get('error', {}).get('message'):
-                    err_results.append(res['error']['message'])
-            if err_results:
-                raise errors.JujuError(err_results)
-
-        elif result['response'].get('error', {}).get('message'):
-            raise errors.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.usertag:
-            return {}
-
-        creds = u'{}:{}'.format(
-            self.usertag,
-            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.connect_params())
-
-    def connect_params(self):
-        """Return a tuple of parameters suitable for passing to
-        Connection.connect that can be used to make a new connection
-        to the same controller (and model if specified. The first
-        element in the returned tuple holds the endpoint argument;
-        the other holds a dict of the keyword args.
-        """
-        return {
-            'endpoint': self.endpoint,
-            'uuid': self.uuid,
-            'username': self.username,
-            'password': self.password,
-            'cacert': self.cacert,
-            'bakery_client': self.bakery_client,
-            'loop': self.loop,
-            'max_frame_size': self.max_frame_size,
-        }
-
-    async def controller(self):
-        """Return a Connection to the controller at self.endpoint
-        """
-        return await Connection.connect(
-            self.endpoint,
-            username=self.username,
-            password=self.password,
-            cacert=self.cacert,
-            bakery_client=self.bakery_client,
-            loop=self.loop,
-            max_frame_size=self.max_frame_size,
-        )
-
-    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_with_login([(self.endpoint, self.cacert)])
-
-    async def _connect(self, endpoints):
-        if len(endpoints) == 0:
-            raise errors.JujuConnectionError('no endpoints to connect to')
-
-        async def _try_endpoint(endpoint, cacert, delay):
-            if delay:
-                await asyncio.sleep(delay)
-            return await self._open(endpoint, cacert)
-
-        # Try all endpoints in parallel, with slight increasing delay (+100ms
-        # for each subsequent endpoint); the delay allows us to prefer the
-        # earlier endpoints over the latter. Use first successful connection.
-        tasks = [self.loop.create_task(_try_endpoint(endpoint, cacert,
-                                                     0.1 * i))
-                 for i, (endpoint, cacert) in enumerate(endpoints)]
-        for attempt in range(self._retries + 1):
-            for task in asyncio.as_completed(tasks, loop=self.loop):
-                try:
-                    result = await task
-                    break
-                except ConnectionError:
-                    continue  # ignore; try another endpoint
-            else:
-                _endpoints_str = ', '.join([endpoint
-                                            for endpoint, cacert in endpoints])
-                if attempt < self._retries:
-                    log.debug('Retrying connection to endpoints: {}; '
-                              'attempt {} of {}'.format(_endpoints_str,
-                                                        attempt + 1,
-                                                        self._retries + 1))
-                    await asyncio.sleep((attempt + 1) * self._retry_backoff)
-                    continue
-                else:
-                    raise errors.JujuConnectionError(
-                        'Unable to connect to any endpoint: '
-                        '{}'.format(_endpoints_str))
-            # only executed if inner loop's else did not continue
-            # (i.e., inner loop did break due to successful connection)
-            break
-        for task in tasks:
-            task.cancel()
-        self.ws = result[0]
-        self.addr = result[1]
-        self.endpoint = result[2]
-        self.cacert = result[3]
-        self._receiver_task.start()
-        log.debug("Driver connected to juju %s", self.addr)
-        self.monitor.close_called.clear()
-
-    async def _connect_with_login(self, endpoints):
-        """Connect to the websocket.
-
-        If uuid is None, the connection will be to the controller. Otherwise it
-        will be to the model.
-        :return: The response field of login response JSON object.
-        """
-        success = False
-        try:
-            await self._connect(endpoints)
-            # It's possible that we may get several discharge-required errors,
-            # corresponding to different levels of authentication, so retry
-            # a few times.
-            for i in range(0, 2):
-                result = (await self.login())['response']
-                macaroonJSON = result.get('discharge-required')
-                if macaroonJSON is None:
-                    self.info = result
-                    success = True
-                    return result
-                macaroon = bakery.Macaroon.from_dict(macaroonJSON)
-                self.bakery_client.handle_error(
-                    httpbakery.Error(
-                        code=httpbakery.ERR_DISCHARGE_REQUIRED,
-                        message=result.get('discharge-required-error'),
-                        version=macaroon.version,
-                        info=httpbakery.ErrorInfo(
-                            macaroon=macaroon,
-                            macaroon_path=result.get('macaroon-path'),
-                        ),
-                    ),
-                    # note: remove the port number.
-                    'https://' + self.endpoint + '/',
-                )
-            raise errors.JujuAuthError('failed to authenticate '
-                                       'after several attempts')
-        finally:
-            if not success:
-                await self.close()
-
-    async def _connect_with_redirect(self, endpoints):
-        try:
-            login_result = await self._connect_with_login(endpoints)
-        except errors.JujuRedirectException as e:
-            login_result = await self._connect_with_login(e.endpoints)
-        self._build_facades(login_result.get('facades', {}))
-        self._pinger_task.start()
-
-    def _build_facades(self, facades):
-        self.facades.clear()
-        for facade in facades:
-            self.facades[facade['name']] = facade['versions'][-1]
-
-    async def login(self):
-        params = {}
-        params['auth-tag'] = self.usertag
-        if self.password:
-            params['credentials'] = self.password
-        else:
-            macaroons = _macaroons_for_domain(self.bakery_client.cookies,
-                                              self.endpoint)
-            params['macaroons'] = [[bakery.macaroon_to_dict(m) for m in ms]
-                                   for ms in macaroons]
-
-        try:
-            return await self.rpc({
-                "type": "Admin",
-                "request": "Login",
-                "version": 3,
-                "params": params,
-            })
-        except errors.JujuAPIError as e:
-            if e.error_code != 'redirection required':
-                raise
-            log.info('Controller requested redirect')
-            # Fetch additional redirection information now so that
-            # we can safely close the connection after login
-            # fails.
-            redirect_info = (await self.rpc({
-                "type": "Admin",
-                "request": "RedirectInfo",
-                "version": 3,
-            }))['response']
-            raise errors.JujuRedirectException(redirect_info) from e
-
-
-class _Task:
-    def __init__(self, task, loop):
-        self.stopped = asyncio.Event(loop=loop)
-        self.stopped.set()
-        self.task = task
-        self.loop = loop
-
-    def start(self):
-        async def run():
-            try:
-                return await self.task()
-            finally:
-                self.stopped.set()
-        self.stopped.clear()
-        self.loop.create_task(run())
-
-
-def _macaroons_for_domain(cookies, domain):
-    '''Return any macaroons from the given cookie jar that
-    apply to the given domain name.'''
-    req = urllib.request.Request('https://' + domain + '/')
-    cookies.add_cookie_header(req)
-    return httpbakery.extract_macaroons(req)
diff --git a/modules/libjuju/juju/client/connector.py b/modules/libjuju/juju/client/connector.py
deleted file mode 100644
index a30adbf..0000000
--- a/modules/libjuju/juju/client/connector.py
+++ /dev/null
@@ -1,156 +0,0 @@
-import asyncio
-import logging
-import copy
-
-import macaroonbakery.httpbakery as httpbakery
-from juju.client.connection import Connection
-from juju.client.gocookies import go_to_py_cookie, GoCookieJar
-from juju.client.jujudata import FileJujuData
-from juju.errors import JujuConnectionError, JujuError
-
-log = logging.getLogger('connector')
-
-
-class NoConnectionException(Exception):
-    '''Raised by Connector when the connection method is called
-    and there is no current connection.'''
-    pass
-
-
-class Connector:
-    '''This class abstracts out a reconnectable client that can connect
-    to controllers and models found in the Juju data files.
-    '''
-    def __init__(
-        self,
-        loop=None,
-        max_frame_size=None,
-        bakery_client=None,
-        jujudata=None,
-    ):
-        '''Initialize a connector that will use the given parameters
-        by default when making a new connection'''
-        self.max_frame_size = max_frame_size
-        self.loop = loop or asyncio.get_event_loop()
-        self.bakery_client = bakery_client
-        self._connection = None
-        self.controller_name = None
-        self.model_name = None
-        self.jujudata = jujudata or FileJujuData()
-
-    def is_connected(self):
-        '''Report whether there is a currently connected controller or not'''
-        return self._connection is not None
-
-    def connection(self):
-        '''Return the current connection; raises an exception if there
-        is no current connection.'''
-        if not self.is_connected():
-            raise NoConnectionException('not connected')
-        return self._connection
-
-    async def connect(self, **kwargs):
-        """Connect to an arbitrary Juju model.
-
-        kwargs are passed through to Connection.connect()
-        """
-        kwargs.setdefault('loop', self.loop)
-        kwargs.setdefault('max_frame_size', self.max_frame_size)
-        kwargs.setdefault('bakery_client', self.bakery_client)
-        if 'macaroons' in kwargs:
-            if not kwargs['bakery_client']:
-                kwargs['bakery_client'] = httpbakery.Client()
-            if not kwargs['bakery_client'].cookies:
-                kwargs['bakery_client'].cookies = GoCookieJar()
-            jar = kwargs['bakery_client'].cookies
-            for macaroon in kwargs.pop('macaroons'):
-                jar.set_cookie(go_to_py_cookie(macaroon))
-        self._connection = await Connection.connect(**kwargs)
-
-    async def disconnect(self):
-        """Shut down the watcher task and close websockets.
-        """
-        if self._connection:
-            log.debug('Closing model connection')
-            await self._connection.close()
-            self._connection = None
-
-    async def connect_controller(self, controller_name=None):
-        """Connect to a controller by name. If the name is empty, it
-        connect to the current controller.
-        """
-        if not controller_name:
-            controller_name = self.jujudata.current_controller()
-        if not controller_name:
-            raise JujuConnectionError('No current controller')
-
-        controller = self.jujudata.controllers()[controller_name]
-        # TODO change Connection so we can pass all the endpoints
-        # instead of just the first.
-        endpoint = controller['api-endpoints'][0]
-        accounts = self.jujudata.accounts().get(controller_name, {})
-
-        await self.connect(
-            endpoint=endpoint,
-            uuid=None,
-            username=accounts.get('user'),
-            password=accounts.get('password'),
-            cacert=controller.get('ca-cert'),
-            bakery_client=self.bakery_client_for_controller(controller_name),
-        )
-        self.controller_name = controller_name
-
-    async def connect_model(self, model_name=None):
-        """Connect to a model by name. If either controller or model
-        parts of the name are empty, the current controller and/or model
-        will be used.
-
-        :param str model: <controller>:<model>
-        """
-
-        try:
-            controller_name, model_name = self.jujudata.parse_model(model_name)
-            controller = self.jujudata.controllers().get(controller_name)
-        except JujuError as e:
-            raise JujuConnectionError(e.message) from e
-        if controller is None:
-            raise JujuConnectionError('Controller {} not found'.format(
-                controller_name))
-        # TODO change Connection so we can pass all the endpoints
-        # instead of just the first one.
-        endpoint = controller['api-endpoints'][0]
-        account = self.jujudata.accounts().get(controller_name, {})
-        models = self.jujudata.models().get(controller_name, {}).get('models',
-                                                                     {})
-        if model_name not in models:
-            raise JujuConnectionError('Model not found: {}'.format(model_name))
-
-        # TODO if there's no record for the required model name, connect
-        # to the controller to find out the model's uuid, then connect
-        # to that. This will let connect_model work with models that
-        # haven't necessarily synced with the local juju data,
-        # and also remove the need for base.CleanModel to
-        # subclass JujuData.
-        await self.connect(
-            endpoint=endpoint,
-            uuid=models[model_name]['uuid'],
-            username=account.get('user'),
-            password=account.get('password'),
-            cacert=controller.get('ca-cert'),
-            bakery_client=self.bakery_client_for_controller(controller_name),
-        )
-        self.controller_name = controller_name
-        self.model_name = controller_name + ':' + model_name
-
-    def bakery_client_for_controller(self, controller_name):
-        '''Make a copy of the bakery client with a the appropriate controller's
-        cookiejar in it.
-        '''
-        bakery_client = self.bakery_client
-        if bakery_client:
-            bakery_client = copy.copy(bakery_client)
-        else:
-            bakery_client = httpbakery.Client()
-        bakery_client.cookies = self.jujudata.cookies_for_controller(
-            controller_name)
-        return bakery_client
diff --git a/modules/libjuju/juju/client/facade.py b/modules/libjuju/juju/client/facade.py
deleted file mode 100644
index ec20c38..0000000
--- a/modules/libjuju/juju/client/facade.py
+++ /dev/null
@@ -1,818 +0,0 @@
-import argparse
-import builtins
-import functools
-import json
-import keyword
-import pprint
-import re
-import textwrap
-import typing
-from collections import defaultdict
-from glob import glob
-from pathlib import Path
-from typing import Any, Mapping, Sequence, TypeVar, Union
-
-from . import codegen
-
-_marker = object()
-
-JUJU_VERSION = re.compile(r'[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', 'ApplicationDeploy']
-
-
-# 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<version>.py file.
-
-    """
-    for _version in range(int(version), 0, -1):
-        try:
-            facade = getattr(CLIENTS[str(_version)], name)
-            return facade
-        except (KeyError, AttributeError):
-            continue
-    else:
-        raise ImportError("No supported version for facade: "
-                          "{}".format(name))
-
-
-'''
-
-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.
-
-        """
-        facade_name = cls.__name__
-        if not facade_name.endswith('Facade'):
-           raise TypeError('Unexpected class name: {}'.format(facade_name))
-        facade_name = facade_name[:-len('Facade')]
-        version = connection.facades.get(facade_name)
-        if version is None:
-            raise Exception('No facade {} in facades {}'.format(facade_name,
-                                                                connection.facades))
-
-        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 (kind in basic_types or
-            type(kind) in basic_types) and keep_builtins is False:
-        return kind.__name__
-    if str(kind).startswith('~'):
-        return str(kind)[1:]
-    if issubclass(kind, typing.GenericMeta):
-        return str(kind)[1:]
-    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 name not 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))]
-
-        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 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))
-                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))
-                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(), cls=TypeEncoder, sort_keys=True)
-
-
-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 d not 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<version>.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 --git a/modules/libjuju/juju/client/gocookies.py b/modules/libjuju/juju/client/gocookies.py
deleted file mode 100644
index 3e48b8d..0000000
--- a/modules/libjuju/juju/client/gocookies.py
+++ /dev/null
@@ -1,102 +0,0 @@
-import datetime
-import http.cookiejar as cookiejar
-import json
-import time
-
-import pyrfc3339
-
-
-class GoCookieJar(cookiejar.FileCookieJar):
-    '''A CookieJar implementation that reads and writes cookies
-    to the cookiejar format as understood by the Go package
-    github.com/juju/persistent-cookiejar.'''
-    def _really_load(self, f, filename, ignore_discard, ignore_expires):
-        '''Implement the _really_load method called by FileCookieJar
-        to implement the actual cookie loading'''
-        data = json.load(f) or []
-        now = time.time()
-        for cookie in map(go_to_py_cookie, data):
-            if not ignore_expires and cookie.is_expired(now):
-                continue
-            self.set_cookie(cookie)
-
-    def save(self, filename=None, ignore_discard=False, ignore_expires=False):
-        '''Implement the FileCookieJar abstract method.'''
-        if filename is None:
-            if self.filename is not None:
-                filename = self.filename
-            else:
-                raise ValueError(cookiejar.MISSING_FILENAME_TEXT)
-
-        # TODO: obtain file lock, read contents of file, and merge with
-        # current content.
-        go_cookies = []
-        now = time.time()
-        for cookie in self:
-            if not ignore_discard and cookie.discard:
-                continue
-            if not ignore_expires and cookie.is_expired(now):
-                continue
-            go_cookies.append(py_to_go_cookie(cookie))
-        with open(filename, "w") as f:
-            f.write(json.dumps(go_cookies))
-
-
-def go_to_py_cookie(go_cookie):
-    '''Convert a Go-style JSON-unmarshaled cookie into a Python cookie'''
-    expires = None
-    if go_cookie.get('Expires') is not None:
-        t = pyrfc3339.parse(go_cookie['Expires'])
-        expires = t.timestamp()
-    return cookiejar.Cookie(
-        version=0,
-        name=go_cookie['Name'],
-        value=go_cookie['Value'],
-        port=None,
-        port_specified=False,
-        # Unfortunately Python cookies don't record the original
-        # host that the cookie came from, so we'll just use Domain
-        # for that purpose, and record that the domain was specified,
-        # even though it probably was not. This means that
-        # we won't correctly record the CanonicalHost entry
-        # when writing the cookie file after reading it.
-        domain=go_cookie['Domain'],
-        domain_specified=not go_cookie['HostOnly'],
-        domain_initial_dot=False,
-        path=go_cookie['Path'],
-        path_specified=True,
-        secure=go_cookie['Secure'],
-        expires=expires,
-        discard=False,
-        comment=None,
-        comment_url=None,
-        rest=None,
-        rfc2109=False,
-    )
-
-
-def py_to_go_cookie(py_cookie):
-    '''Convert a python cookie to the JSON-marshalable Go-style cookie form.'''
-    # TODO (perhaps):
-    #   HttpOnly
-    #   Creation
-    #   LastAccess
-    #   Updated
-    # not done properly: CanonicalHost.
-    go_cookie = {
-        'Name': py_cookie.name,
-        'Value': py_cookie.value,
-        'Domain': py_cookie.domain,
-        'HostOnly': not py_cookie.domain_specified,
-        'Persistent': not py_cookie.discard,
-        'Secure': py_cookie.secure,
-        'CanonicalHost': py_cookie.domain,
-    }
-    if py_cookie.path_specified:
-        go_cookie['Path'] = py_cookie.path
-    if py_cookie.expires is not None:
-        unix_time = datetime.datetime.fromtimestamp(py_cookie.expires)
-        # Note: fromtimestamp bizarrely produces a time without
-        # a time zone, so we need to use accept_naive.
-        go_cookie['Expires'] = pyrfc3339.generate(unix_time, accept_naive=True)
-    return go_cookie
diff --git a/modules/libjuju/juju/client/jujudata.py b/modules/libjuju/juju/client/jujudata.py
deleted file mode 100644
index 8b844c2..0000000
--- a/modules/libjuju/juju/client/jujudata.py
+++ /dev/null
@@ -1,219 +0,0 @@
-import abc
-import io
-import os
-import pathlib
-
-import juju.client.client as jujuclient
-import yaml
-from juju import tag
-from juju.client.gocookies import GoCookieJar
-from juju.errors import JujuError
-
-
-class NoModelException(Exception):
-    pass
-
-
-class JujuData:
-    __metaclass__ = abc.ABCMeta
-
-    @abc.abstractmethod
-    def current_controller(self):
-        '''Return the current controller name'''
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def controllers(self):
-        '''Return all the currently known controllers as a dict
-        mapping controller name to a dict containing the
-        following string keys:
-        uuid: The UUID of the controller
-        api-endpoints: A list of host:port addresses for the controller.
-        ca-cert: the PEM-encoded CA cert of the controller (optional)
-
-        This is compatible with the "controllers" entry in the YAML-unmarshaled data
-        stored in ~/.local/share/juju/controllers.yaml.
-        '''
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def models(self):
-        '''Return all the currently known models as a dict
-        containing a key for each known controller,
-        each holding a dict value containing an optional "current-model"
-        key (the name of the current model for that controller,
-        if there is one), and a dict mapping fully-qualified
-        model names to a dict containing a "uuid" key with the
-        key for that model.
-        This is compatible with the YAML-unmarshaled data
-        stored in ~/.local/share/juju/models.yaml.
-        '''
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def accounts(self):
-        '''Return the currently known accounts, as a dict
-        containing a key for each known controller, with
-        each value holding a dict with the following keys:
-
-        user: The username to use when logging into the controller (str)
-        password: The password to use when logging into the controller (str, optional)
-        '''
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def cookies_for_controller(self, controller_name):
-        '''Return the cookie jar to use when connecting to the
-        controller with the given name.
-        :return http.cookiejar.CookieJar
-        '''
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def current_model(self, controller_name=None, model_only=False):
-        '''Return the current model, qualified by its controller name.
-        If controller_name is specified, the current model for
-        that controller will be returned.
-        If model_only is true, only the model name, not qualified by
-        its controller name, will be returned.
-        '''
-        raise NotImplementedError()
-
-    def parse_model(self, model):
-        """Split the given model_name into controller and model parts.
-        If the controller part is empty, the current controller will be used.
-        If the model part is empty, the current model will be used for
-        the controller.
-        The returned model name will always be qualified with a username.
-        :param model str: The model name to parse.
-        :return (str, str): The controller and model names.
-        """
-        # TODO if model is empty, use $JUJU_MODEL environment variable.
-        if model and ':' in model:
-            # explicit controller given
-            controller_name, model_name = model.split(':')
-        else:
-            # use the current controller if one isn't explicitly given
-            controller_name = self.current_controller()
-            model_name = model
-        if not controller_name:
-            controller_name = self.current_controller()
-        if not model_name:
-            model_name = self.current_model(controller_name, model_only=True)
-            if not model_name:
-                raise NoModelException('no current model')
-
-        if '/' not in model_name:
-            # model name doesn't include a user prefix, so add one
-            # by using the current user for the controller.
-            accounts = self.accounts().get(controller_name)
-            if accounts is None:
-                raise JujuError('No account found for controller {} '.format(controller_name))
-            username = accounts.get('user')
-            if username is None:
-                raise JujuError('No username found for controller {}'.format(controller_name))
-            model_name = username + "/" + model_name
-
-        return controller_name, model_name
-
-
-class FileJujuData(JujuData):
-    '''Provide access to the Juju client configuration files.
-    Any configuration file is read once and then cached.'''
-    def __init__(self):
-        self.path = os.environ.get('JUJU_DATA') or '~/.local/share/juju'
-        self.path = os.path.abspath(os.path.expanduser(self.path))
-        # _loaded keeps track of the loaded YAML from
-        # the Juju data files so we don't need to load the same
-        # file many times.
-        self._loaded = {}
-
-    def refresh(self):
-        '''Forget the cache of configuration file data'''
-        self._loaded = {}
-
-    def current_controller(self):
-        '''Return the current controller name'''
-        return self._load_yaml('controllers.yaml', 'current-controller')
-
-    def current_model(self, controller_name=None, model_only=False):
-        '''Return the current model, qualified by its controller name.
-        If controller_name is specified, the current model for
-        that controller will be returned.
-
-        If model_only is true, only the model name, not qualified by
-        its controller name, will be returned.
-        '''
-        # TODO respect JUJU_MODEL environment variable.
-        if not controller_name:
-            controller_name = self.current_controller()
-        if not controller_name:
-            raise JujuError('No current controller')
-        models = self.models()[controller_name]
-        if 'current-model' not in models:
-            return None
-        if model_only:
-            return models['current-model']
-        return controller_name + ':' + models['current-model']
-
-    def load_credential(self, cloud, name=None):
-        """Load a local credential.
-
-        :param str cloud: Name of cloud to load credentials from.
-        :param str name: Name of credential. If None, the default credential
-            will be used, if available.
-        :return: A CloudCredential instance, or None.
-        """
-        try:
-            cloud = tag.untag('cloud-', cloud)
-            creds_data = self.credentials()[cloud]
-            if not name:
-                default_credential = creds_data.pop('default-credential', None)
-                default_region = creds_data.pop('default-region', None)  # noqa
-                if default_credential:
-                    name = creds_data['default-credential']
-                elif len(creds_data) == 1:
-                    name = list(creds_data)[0]
-                else:
-                    return None, None
-            cred_data = creds_data[name]
-            auth_type = cred_data.pop('auth-type')
-            return name, jujuclient.CloudCredential(
-                auth_type=auth_type,
-                attrs=cred_data,
-            )
-        except (KeyError, FileNotFoundError):
-            return None, None
-
-    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 credentials(self):
-        return self._load_yaml('credentials.yaml', 'credentials')
-
-    def _load_yaml(self, filename, key):
-        if filename in self._loaded:
-            # Data already exists in the cache.
-            return self._loaded[filename].get(key)
-        # TODO use the file lock like Juju does.
-        filepath = os.path.join(self.path, filename)
-        with io.open(filepath, 'rt') as f:
-            data = yaml.safe_load(f)
-            self._loaded[filename] = data
-            return data.get(key)
-
-    def cookies_for_controller(self, controller_name):
-        f = pathlib.Path(self.path) / 'cookies' / (controller_name + '.json')
-        if not f.exists():
-            f = pathlib.Path('~/.go-cookies').expanduser()
-            # TODO if neither cookie file exists, where should
-            # we create the cookies?
-        jar = GoCookieJar(str(f))
-        jar.load()
-        return jar
diff --git a/modules/libjuju/juju/client/overrides.py b/modules/libjuju/juju/client/overrides.py
deleted file mode 100644
index 49ab931..0000000
--- a/modules/libjuju/juju/client/overrides.py
+++ /dev/null
@@ -1,365 +0,0 @@
-import re
-from collections import namedtuple
-
-from . import _client, _definitions
-from .facade import ReturnMapping, Type, TypeEncoder
-
-__all__ = [
-    'Delta',
-    'Number',
-    'Binary',
-    'ConfigValue',
-    'Resource',
-]
-
-__patches__ = [
-    'ResourcesFacade',
-    'AllWatcherFacade',
-    'ActionFacade',
-]
-
-
-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 ActionFacade(Type):
-
-    class _FindTagsResults(Type):
-        _toSchema = {'matches': 'matches'}
-        _toPy = {'matches': 'matches'}
-
-        def __init__(self, matches=None, **unknown_fields):
-            '''
-            FindTagsResults wraps the mapping between the requested prefix and the
-            matching tags for each requested prefix.
-
-            Matches map[string][]Entity `json:"matches"`
-            '''
-            self.matches = {}
-            matches = matches or {}
-            for prefix, tags in matches.items():
-                self.matches[prefix] = [_definitions.Entity.from_json(r)
-                                        for r in tags]
-
-    @ReturnMapping(_FindTagsResults)
-    async def FindActionTagsByPrefix(self, prefixes):
-        '''
-        prefixes : typing.Sequence[str]
-        Returns -> typing.Sequence[~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
-
-
-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 '<Number major={} minor={} patch={} tag={} build={}>'.format(
-            self.major, self.minor, self.patch, self.tag, self.build)
-
-    def __str__(self):
-        return self.serialize()
-
-    @property
-    def _cmp(self):
-        return (self.major, self.minor, self.tag, self.patch, self.build)
-
-    def __eq__(self, other):
-        return isinstance(other, type(self)) and self._cmp == other._cmp
-
-    def __lt__(self, other):
-        return self._cmp < other._cmp
-
-    def __le__(self, other):
-        return self._cmp <= other._cmp
-
-    def __gt__(self, other):
-        return self._cmp > other._cmp
-
-    def __ge__(self, other):
-        return self._cmp >= other._cmp
-
-    @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 '<Binary number={} series={} arch={}>'.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))
-
-
-class Resource(Type):
-    _toSchema = {'application': 'application',
-                 'charmresource': 'CharmResource',
-                 'id_': 'id',
-                 'pending_id': 'pending-id',
-                 'timestamp': 'timestamp',
-                 'username': 'username',
-                 'name': 'name',
-                 'origin': 'origin'}
-    _toPy = {'CharmResource': 'charmresource',
-             'application': 'application',
-             'id': 'id_',
-             'pending-id': 'pending_id',
-             'timestamp': 'timestamp',
-             'username': 'username',
-             'name': 'name',
-             'origin': 'origin'}
-
-    def __init__(self, charmresource=None, application=None, id_=None,
-                 pending_id=None, timestamp=None, username=None, name=None,
-                 origin=None, **unknown_fields):
-        '''
-        charmresource : CharmResource
-        application : str
-        id_ : str
-        pending_id : str
-        timestamp : str
-        username : str
-        name: str
-        origin : str
-        '''
-        if charmresource:
-            self.charmresource = _client.CharmResource.from_json(charmresource)
-        else:
-            self.charmresource = None
-        self.application = application
-        self.id_ = id_
-        self.pending_id = pending_id
-        self.timestamp = timestamp
-        self.username = username
-        self.name = name
-        self.origin = origin
diff --git a/modules/libjuju/juju/client/runner.py b/modules/libjuju/juju/client/runner.py
deleted file mode 100644
index 6545bc4..0000000
--- a/modules/libjuju/juju/client/runner.py
+++ /dev/null
@@ -1,21 +0,0 @@
-
-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 --git a/modules/libjuju/juju/client/schemas-juju-2.0.0.json b/modules/libjuju/juju/client/schemas-juju-2.0.0.json
deleted file mode 100644
index c53a541..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.0.0.json
+++ /dev/null
@@ -1,24533 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.0.1.json b/modules/libjuju/juju/client/schemas-juju-2.0.1.json
deleted file mode 100644
index 69db493..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.0.1.json
+++ /dev/null
@@ -1,24799 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.0.2.json b/modules/libjuju/juju/client/schemas-juju-2.0.2.json
deleted file mode 100644
index 69db493..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.0.2.json
+++ /dev/null
@@ -1,24799 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.0.3.json b/modules/libjuju/juju/client/schemas-juju-2.0.3.json
deleted file mode 100644
index 69db493..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.0.3.json
+++ /dev/null
@@ -1,24799 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.1.0.json b/modules/libjuju/juju/client/schemas-juju-2.1.0.json
deleted file mode 100644
index 15f068f..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.1.0.json
+++ /dev/null
@@ -1,25652 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.1.1.json b/modules/libjuju/juju/client/schemas-juju-2.1.1.json
deleted file mode 100644
index 474b204..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.1.1.json
+++ /dev/null
@@ -1,25730 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.1.2.json b/modules/libjuju/juju/client/schemas-juju-2.1.2.json
deleted file mode 100644
index 474b204..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.1.2.json
+++ /dev/null
@@ -1,25730 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.2-alpha1.json b/modules/libjuju/juju/client/schemas-juju-2.2-alpha1.json
deleted file mode 100644
index 8fa5071..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.2-alpha1.json
+++ /dev/null
@@ -1,25974 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.2-beta1.json b/modules/libjuju/juju/client/schemas-juju-2.2-beta1.json
deleted file mode 100644
index 9bd941b..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.2-beta1.json
+++ /dev/null
@@ -1,26135 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.2-beta2.json b/modules/libjuju/juju/client/schemas-juju-2.2-beta2.json
deleted file mode 100644
index 4b141fd..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.2-beta2.json
+++ /dev/null
@@ -1,26150 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.2-rc1.json b/modules/libjuju/juju/client/schemas-juju-2.2-rc1.json
deleted file mode 100644
index 17e841a..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.2-rc1.json
+++ /dev/null
@@ -1,26295 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.3-alpha1.json b/modules/libjuju/juju/client/schemas-juju-2.3-alpha1.json
deleted file mode 100644
index e59c105..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.3-alpha1.json
+++ /dev/null
@@ -1,26050 +0,0 @@
-[
-  {
-    "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 --git a/modules/libjuju/juju/client/schemas-juju-2.5-rc1.json b/modules/libjuju/juju/client/schemas-juju-2.5-rc1.json
deleted file mode 100644
index b53dd0b..0000000
--- a/modules/libjuju/juju/client/schemas-juju-2.5-rc1.json
+++ /dev/null
@@ -1,37036 +0,0 @@
-[
-  {
-    "Name": "Action",
-    "Version": 3,
-    "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": "ActionPruner",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
-        "Prune": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ActionPruneArgs"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "ActionPruneArgs": {
-          "type": "object",
-          "properties": {
-            "max-history-mb": {
-              "type": "integer"
-            },
-            "max-history-time": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "max-history-time",
-            "max-history-mb"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/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"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "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"
-            }
-          }
-        },
-        "ControllerAPIInfoForModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "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": {
-            "cacertificates": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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
-        },
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-            },
-            "controller-api-port": {
-              "type": "integer"
-            },
-            "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": 8,
-    "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"
-            }
-          }
-        },
-        "CharmConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetConfigResults"
-            }
-          }
-        },
-        "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/DestroyApplicationsParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/DestroyApplicationResults"
-            }
-          }
-        },
-        "DestroyConsumedApplications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyConsumedApplicationsParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "DestroyRelation": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyRelation"
-            }
-          }
-        },
-        "DestroyUnit": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyUnitsParams"
-            },
-            "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"
-            }
-          }
-        },
-        "GetConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetConfigResults"
-            }
-          }
-        },
-        "GetConstraints": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetConstraintsResults"
-            }
-          }
-        },
-        "GetLXDProfileUpgradeMessages": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/LXDProfileUpgradeMessages"
-            },
-            "Result": {
-              "$ref": "#/definitions/LXDProfileUpgradeMessagesResults"
-            }
-          }
-        },
-        "ResolveUnitErrors": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UnitsResolved"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "ScaleApplications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ScaleApplicationsParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ScaleApplicationResults"
-            }
-          }
-        },
-        "Set": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationSet"
-            }
-          }
-        },
-        "SetApplicationsConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationConfigSetArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetCharm": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationSetCharm"
-            }
-          }
-        },
-        "SetCharmProfile": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationSetCharmProfile"
-            }
-          }
-        },
-        "SetConstraints": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetConstraints"
-            }
-          }
-        },
-        "SetMetricCredentials": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationMetricCredentials"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetRelationsSuspended": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RelationSuspendedArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Unexpose": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationUnexpose"
-            }
-          }
-        },
-        "Unset": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationUnset"
-            }
-          }
-        },
-        "UnsetApplicationsConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationConfigUnsetArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Update": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationUpdate"
-            }
-          }
-        },
-        "UpdateApplicationSeries": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateSeriesArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchLXDProfileUpgradeNotifications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entity"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "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"
-              }
-            },
-            "policy": {
-              "type": "string"
-            }
-          },
-          "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"
-              }
-            },
-            "via-cidrs": {
-              "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"
-          ]
-        },
-        "ApplicationConfigSet": {
-          "type": "object",
-          "properties": {
-            "application": {
-              "type": "string"
-            },
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application",
-            "config"
-          ]
-        },
-        "ApplicationConfigSetArgs": {
-          "type": "object",
-          "properties": {
-            "Args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationConfigSet"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Args"
-          ]
-        },
-        "ApplicationConfigUnsetArgs": {
-          "type": "object",
-          "properties": {
-            "Args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationUnset"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Args"
-          ]
-        },
-        "ApplicationConstraint": {
-          "type": "object",
-          "properties": {
-            "constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "constraints"
-          ]
-        },
-        "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"
-            },
-            "devices": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/Constraints"
-                }
-              }
-            },
-            "endpoint-bindings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "num-units": {
-              "type": "integer"
-            },
-            "placement": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Placement"
-              }
-            },
-            "policy": {
-              "type": "string"
-            },
-            "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"
-          ]
-        },
-        "ApplicationGetConfigResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ConfigResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "ApplicationGetConstraintsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationConstraint"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "ApplicationGetResults": {
-          "type": "object",
-          "properties": {
-            "application": {
-              "type": "string"
-            },
-            "application-config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "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"
-          ]
-        },
-        "ApplicationOfferDetails": {
-          "type": "object",
-          "properties": {
-            "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"
-            },
-            "offer-uuid": {
-              "type": "string"
-            },
-            "source-model-tag": {
-              "type": "string"
-            },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteSpace"
-              }
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferUserDetails"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "source-model-tag",
-            "offer-uuid",
-            "offer-url",
-            "offer-name",
-            "application-description"
-          ]
-        },
-        "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": {
-              "type": "boolean"
-            },
-            "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",
-            "force-units",
-            "force-series"
-          ]
-        },
-        "ApplicationSetCharmProfile": {
-          "type": "object",
-          "properties": {
-            "application": {
-              "type": "string"
-            },
-            "charm-url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application",
-            "charm-url"
-          ]
-        },
-        "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": {
-              "type": "boolean"
-            },
-            "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",
-            "force",
-            "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"
-          ]
-        },
-        "ConfigResult": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config"
-          ]
-        },
-        "Constraints": {
-          "type": "object",
-          "properties": {
-            "Count": {
-              "type": "integer"
-            },
-            "Pool": {
-              "type": "string"
-            },
-            "Size": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Pool",
-            "Size",
-            "Count"
-          ]
-        },
-        "ConsumeApplicationArg": {
-          "type": "object",
-          "properties": {
-            "ApplicationOfferDetails": {
-              "$ref": "#/definitions/ApplicationOfferDetails"
-            },
-            "application-alias": {
-              "type": "string"
-            },
-            "external-controller": {
-              "$ref": "#/definitions/ExternalControllerInfo"
-            },
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ApplicationOfferDetails"
-          ]
-        },
-        "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
-        },
-        "DestroyApplicationParams": {
-          "type": "object",
-          "properties": {
-            "application-tag": {
-              "type": "string"
-            },
-            "destroy-storage": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-tag"
-          ]
-        },
-        "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"
-          ]
-        },
-        "DestroyApplicationsParams": {
-          "type": "object",
-          "properties": {
-            "applications": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/DestroyApplicationParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "applications"
-          ]
-        },
-        "DestroyConsumedApplicationParams": {
-          "type": "object",
-          "properties": {
-            "application-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-tag"
-          ]
-        },
-        "DestroyConsumedApplicationsParams": {
-          "type": "object",
-          "properties": {
-            "applications": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/DestroyConsumedApplicationParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "applications"
-          ]
-        },
-        "DestroyRelation": {
-          "type": "object",
-          "properties": {
-            "endpoints": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "relation-id": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-id"
-          ]
-        },
-        "DestroyUnitInfo": {
-          "type": "object",
-          "properties": {
-            "destroyed-storage": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
-            },
-            "detached-storage": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "DestroyUnitParams": {
-          "type": "object",
-          "properties": {
-            "destroy-storage": {
-              "type": "boolean"
-            },
-            "unit-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-tag"
-          ]
-        },
-        "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
-        },
-        "DestroyUnitsParams": {
-          "type": "object",
-          "properties": {
-            "units": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/DestroyUnitParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "units"
-          ]
-        },
-        "Entities": {
-          "type": "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"
-          ]
-        },
-        "ExternalControllerInfo": {
-          "type": "object",
-          "properties": {
-            "addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "ca-cert": {
-              "type": "string"
-            },
-            "controller-alias": {
-              "type": "string"
-            },
-            "controller-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "controller-tag",
-            "controller-alias",
-            "addrs",
-            "ca-cert"
-          ]
-        },
-        "LXDProfileUpgradeMessages": {
-          "type": "object",
-          "properties": {
-            "application": {
-              "$ref": "#/definitions/Entity"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application",
-            "watcher-id"
-          ]
-        },
-        "LXDProfileUpgradeMessagesResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "message": {
-              "type": "string"
-            },
-            "unit-name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-name",
-            "message"
-          ]
-        },
-        "LXDProfileUpgradeMessagesResults": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LXDProfileUpgradeMessagesResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "NotifyWatchResult": {
-          "type": "object",
-          "properties": {
-            "NotifyWatcherId": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId"
-          ]
-        },
-        "OfferUserDetails": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "display-name": {
-              "type": "string"
-            },
-            "user": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user",
-            "display-name",
-            "access"
-          ]
-        },
-        "Placement": {
-          "type": "object",
-          "properties": {
-            "directive": {
-              "type": "string"
-            },
-            "scope": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "scope",
-            "directive"
-          ]
-        },
-        "RelationSuspendedArg": {
-          "type": "object",
-          "properties": {
-            "message": {
-              "type": "string"
-            },
-            "relation-id": {
-              "type": "integer"
-            },
-            "suspended": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-id",
-            "message",
-            "suspended"
-          ]
-        },
-        "RelationSuspendedArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationSuspendedArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "RemoteEndpoint": {
-          "type": "object",
-          "properties": {
-            "interface": {
-              "type": "string"
-            },
-            "limit": {
-              "type": "integer"
-            },
-            "name": {
-              "type": "string"
-            },
-            "role": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "role",
-            "interface",
-            "limit"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ScaleApplicationInfo": {
-          "type": "object",
-          "properties": {
-            "num-units": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "num-units"
-          ]
-        },
-        "ScaleApplicationParams": {
-          "type": "object",
-          "properties": {
-            "application-tag": {
-              "type": "string"
-            },
-            "scale": {
-              "type": "integer"
-            },
-            "scale-change": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-tag",
-            "scale"
-          ]
-        },
-        "ScaleApplicationResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "info": {
-              "$ref": "#/definitions/ScaleApplicationInfo"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ScaleApplicationResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ScaleApplicationResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "ScaleApplicationsParams": {
-          "type": "object",
-          "properties": {
-            "applications": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ScaleApplicationParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "applications"
-          ]
-        },
-        "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"
-          ]
-        },
-        "UnitsResolved": {
-          "type": "object",
-          "properties": {
-            "all": {
-              "type": "boolean"
-            },
-            "retry": {
-              "type": "boolean"
-            },
-            "tags": {
-              "$ref": "#/definitions/Entities"
-            }
-          },
-          "additionalProperties": false
-        },
-        "UpdateSeriesArg": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "series": {
-              "type": "string"
-            },
-            "tag": {
-              "$ref": "#/definitions/Entity"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "force",
-            "series"
-          ]
-        },
-        "UpdateSeriesArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateSeriesArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "ApplicationOffers",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ApplicationOffers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferURLs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationOffersResults"
-            }
-          }
-        },
-        "DestroyOffers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyApplicationOffers"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "FindApplicationOffers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferFilters"
-            },
-            "Result": {
-              "$ref": "#/definitions/QueryApplicationOffersResults"
-            }
-          }
-        },
-        "GetConsumeDetails": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferURLs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ConsumeOfferDetailsResults"
-            }
-          }
-        },
-        "ListApplicationOffers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferFilters"
-            },
-            "Result": {
-              "$ref": "#/definitions/QueryApplicationOffersResults"
-            }
-          }
-        },
-        "ModifyOfferAccess": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModifyOfferAccessRequest"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Offer": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddApplicationOffers"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RemoteApplicationInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferURLs"
-            },
-            "Result": {
-              "$ref": "#/definitions/RemoteApplicationInfoResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "AddApplicationOffer": {
-          "type": "object",
-          "properties": {
-            "application-description": {
-              "type": "string"
-            },
-            "application-name": {
-              "type": "string"
-            },
-            "endpoints": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "offer-name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "offer-name",
-            "application-name",
-            "application-description",
-            "endpoints"
-          ]
-        },
-        "AddApplicationOffers": {
-          "type": "object",
-          "properties": {
-            "Offers": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/AddApplicationOffer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Offers"
-          ]
-        },
-        "ApplicationOfferAdminDetails": {
-          "type": "object",
-          "properties": {
-            "ApplicationOfferDetails": {
-              "$ref": "#/definitions/ApplicationOfferDetails"
-            },
-            "application-name": {
-              "type": "string"
-            },
-            "charm-url": {
-              "type": "string"
-            },
-            "connections": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferConnection"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ApplicationOfferDetails",
-            "application-name",
-            "charm-url"
-          ]
-        },
-        "ApplicationOfferDetails": {
-          "type": "object",
-          "properties": {
-            "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"
-            },
-            "offer-uuid": {
-              "type": "string"
-            },
-            "source-model-tag": {
-              "type": "string"
-            },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteSpace"
-              }
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferUserDetails"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "source-model-tag",
-            "offer-uuid",
-            "offer-url",
-            "offer-name",
-            "application-description"
-          ]
-        },
-        "ApplicationOfferResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ApplicationOfferAdminDetails"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ApplicationOffersResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationOfferResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "ConsumeOfferDetails": {
-          "type": "object",
-          "properties": {
-            "external-controller": {
-              "$ref": "#/definitions/ExternalControllerInfo"
-            },
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "offer": {
-              "$ref": "#/definitions/ApplicationOfferDetails"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ConsumeOfferDetailsResult": {
-          "type": "object",
-          "properties": {
-            "ConsumeOfferDetails": {
-              "$ref": "#/definitions/ConsumeOfferDetails"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ConsumeOfferDetails"
-          ]
-        },
-        "ConsumeOfferDetailsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ConsumeOfferDetailsResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "DestroyApplicationOffers": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "offer-urls": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-urls"
-          ]
-        },
-        "EndpointFilterAttributes": {
-          "type": "object",
-          "properties": {
-            "interface": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            },
-            "role": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "role",
-            "interface",
-            "name"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ExternalControllerInfo": {
-          "type": "object",
-          "properties": {
-            "addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "ca-cert": {
-              "type": "string"
-            },
-            "controller-alias": {
-              "type": "string"
-            },
-            "controller-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "controller-tag",
-            "controller-alias",
-            "addrs",
-            "ca-cert"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "ModifyOfferAccess": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "action": {
-              "type": "string"
-            },
-            "offer-url": {
-              "type": "string"
-            },
-            "user-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user-tag",
-            "action",
-            "access",
-            "offer-url"
-          ]
-        },
-        "ModifyOfferAccessRequest": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModifyOfferAccess"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "changes"
-          ]
-        },
-        "OfferConnection": {
-          "type": "object",
-          "properties": {
-            "endpoint": {
-              "type": "string"
-            },
-            "ingress-subnets": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "relation-id": {
-              "type": "integer"
-            },
-            "source-model-tag": {
-              "type": "string"
-            },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            },
-            "username": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "source-model-tag",
-            "relation-id",
-            "username",
-            "endpoint",
-            "status",
-            "ingress-subnets"
-          ]
-        },
-        "OfferFilter": {
-          "type": "object",
-          "properties": {
-            "allowed-users": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "application-description": {
-              "type": "string"
-            },
-            "application-name": {
-              "type": "string"
-            },
-            "application-user": {
-              "type": "string"
-            },
-            "connected-users": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "endpoints": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EndpointFilterAttributes"
-              }
-            },
-            "model-name": {
-              "type": "string"
-            },
-            "offer-name": {
-              "type": "string"
-            },
-            "owner-name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "owner-name",
-            "model-name",
-            "offer-name",
-            "application-name",
-            "application-description",
-            "application-user",
-            "endpoints",
-            "connected-users",
-            "allowed-users"
-          ]
-        },
-        "OfferFilters": {
-          "type": "object",
-          "properties": {
-            "Filters": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferFilter"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Filters"
-          ]
-        },
-        "OfferURLs": {
-          "type": "object",
-          "properties": {
-            "offer-urls": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "OfferUserDetails": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "display-name": {
-              "type": "string"
-            },
-            "user": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user",
-            "display-name",
-            "access"
-          ]
-        },
-        "QueryApplicationOffersResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationOfferAdminDetails"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RemoteApplicationInfo": {
-          "type": "object",
-          "properties": {
-            "description": {
-              "type": "string"
-            },
-            "endpoints": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteEndpoint"
-              }
-            },
-            "icon-url-path": {
-              "type": "string"
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            },
-            "offer-url": {
-              "type": "string"
-            },
-            "source-model-label": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "name",
-            "description",
-            "offer-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"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "role",
-            "interface",
-            "limit"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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": "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": 2,
-    "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"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Restore": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RestoreArgs"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "BackupsCreateArgs": {
-          "type": "object",
-          "properties": {
-            "keep-copy": {
-              "type": "boolean"
-            },
-            "no-download": {
-              "type": "boolean"
-            },
-            "notes": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "notes",
-            "keep-copy",
-            "no-download"
-          ]
-        },
-        "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"
-            },
-            "filename": {
-              "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",
-            "filename"
-          ]
-        },
-        "BackupsRemoveArgs": {
-          "type": "object",
-          "properties": {
-            "ids": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ids"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "message",
-            "code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "macaroon-path": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "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
-        },
-        "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": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ExportBundle": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
-            }
-          }
-        },
-        "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": {
-            "bundleURL": {
-              "type": "string"
-            },
-            "yaml": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "yaml",
-            "bundleURL"
-          ]
-        },
-        "BundleChangesResults": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BundleChange"
-              }
-            },
-            "errors": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "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
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "StringResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CAASAgent",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "CloudSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudSpecResults"
-            }
-          }
-        },
-        "GetCloudSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelTag"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudSpecResult"
-            }
-          }
-        },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "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": {
-            "cacertificates": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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
-        },
-        "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"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CAASFirewaller",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ApplicationsConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetConfigResults"
-            }
-          }
-        },
-        "IsExposed": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "WatchApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "ApplicationGetConfigResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ConfigResult"
-              }
-            }
-          },
-          "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"
-          ]
-        },
-        "ConfigResult": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "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"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/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"
-          ]
-        },
-        "StringsWatchResult": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CAASOperator",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "Charm": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationCharmResults"
-            }
-          }
-        },
-        "CurrentModel": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelResult"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "SetPodSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetPodSpecParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetTools": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntitiesVersion"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "ApplicationCharm": {
-          "type": "object",
-          "properties": {
-            "charm-modified-version": {
-              "type": "integer"
-            },
-            "force-upgrade": {
-              "type": "boolean"
-            },
-            "sha256": {
-              "type": "string"
-            },
-            "url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "url",
-            "sha256",
-            "charm-modified-version"
-          ]
-        },
-        "ApplicationCharmResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ApplicationCharm"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ApplicationCharmResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationCharmResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "EntityString": {
-          "type": "object",
-          "properties": {
-            "tag": {
-              "type": "string"
-            },
-            "value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "value"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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
-        },
-        "ModelResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "name": {
-              "type": "string"
-            },
-            "type": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "type"
-          ]
-        },
-        "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"
-          ]
-        },
-        "SetPodSpecParams": {
-          "type": "object",
-          "properties": {
-            "specs": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityString"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "specs"
-          ]
-        },
-        "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"
-          ]
-        },
-        "Version": {
-          "type": "object",
-          "properties": {
-            "version": {
-              "$ref": "#/definitions/Binary"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "version"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CAASOperatorProvisioner",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ModelUUID": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
-            }
-          }
-        },
-        "OperatorProvisioningInfo": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/OperatorProvisioningInfo"
-            }
-          }
-        },
-        "SetPasswords": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntityPasswords"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchAPIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchApplications": {
-          "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"
-          ]
-        },
-        "Entities": {
-          "type": "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"
-          ]
-        },
-        "HostPort": {
-          "type": "object",
-          "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
-            },
-            "port": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Address",
-            "port"
-          ]
-        },
-        "KubernetesFilesystemAttachmentParams": {
-          "type": "object",
-          "properties": {
-            "mount-point": {
-              "type": "string"
-            },
-            "provider": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider"
-          ]
-        },
-        "KubernetesFilesystemParams": {
-          "type": "object",
-          "properties": {
-            "attachment": {
-              "$ref": "#/definitions/KubernetesFilesystemAttachmentParams"
-            },
-            "attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "provider": {
-              "type": "string"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "storagename": {
-              "type": "string"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storagename",
-            "size",
-            "provider"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "OperatorProvisioningInfo": {
-          "type": "object",
-          "properties": {
-            "api-addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "charm-storage": {
-              "$ref": "#/definitions/KubernetesFilesystemParams"
-            },
-            "image-path": {
-              "type": "string"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "version": {
-              "$ref": "#/definitions/Number"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "image-path",
-            "version",
-            "api-addresses",
-            "charm-storage"
-          ]
-        },
-        "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"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CAASUnitProvisioner",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ApplicationsConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetConfigResults"
-            }
-          }
-        },
-        "ApplicationsScale": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/IntResults"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ProvisioningInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/KubernetesProvisioningInfoResults"
-            }
-          }
-        },
-        "SetOperatorStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "UpdateApplicationsService": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateApplicationServiceArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "UpdateApplicationsUnits": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateApplicationUnitArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        },
-        "WatchApplicationsScale": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "WatchPodSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "Address": {
-          "type": "object",
-          "properties": {
-            "scope": {
-              "type": "string"
-            },
-            "space-name": {
-              "type": "string"
-            },
-            "type": {
-              "type": "string"
-            },
-            "value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "value",
-            "type",
-            "scope"
-          ]
-        },
-        "ApplicationGetConfigResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ConfigResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "ApplicationUnitParams": {
-          "type": "object",
-          "properties": {
-            "address": {
-              "type": "string"
-            },
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "filesystem-info": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/KubernetesFilesystemInfo"
-              }
-            },
-            "info": {
-              "type": "string"
-            },
-            "ports": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            },
-            "unit-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider-id",
-            "unit-tag",
-            "address",
-            "ports",
-            "status",
-            "info"
-          ]
-        },
-        "ConfigResult": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "KubernetesDeviceParams": {
-          "type": "object",
-          "properties": {
-            "Attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "Count": {
-              "type": "integer"
-            },
-            "Type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Type",
-            "Count",
-            "Attributes"
-          ]
-        },
-        "KubernetesFilesystemAttachmentParams": {
-          "type": "object",
-          "properties": {
-            "mount-point": {
-              "type": "string"
-            },
-            "provider": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider"
-          ]
-        },
-        "KubernetesFilesystemInfo": {
-          "type": "object",
-          "properties": {
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "filesystem-id": {
-              "type": "string"
-            },
-            "info": {
-              "type": "string"
-            },
-            "mount-point": {
-              "type": "string"
-            },
-            "pool": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "status": {
-              "type": "string"
-            },
-            "storagename": {
-              "type": "string"
-            },
-            "volume": {
-              "$ref": "#/definitions/KubernetesVolumeInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storagename",
-            "pool",
-            "size",
-            "filesystem-id",
-            "status",
-            "info",
-            "volume"
-          ]
-        },
-        "KubernetesFilesystemParams": {
-          "type": "object",
-          "properties": {
-            "attachment": {
-              "$ref": "#/definitions/KubernetesFilesystemAttachmentParams"
-            },
-            "attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "provider": {
-              "type": "string"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "storagename": {
-              "type": "string"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storagename",
-            "size",
-            "provider"
-          ]
-        },
-        "KubernetesProvisioningInfo": {
-          "type": "object",
-          "properties": {
-            "constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "devices": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/KubernetesDeviceParams"
-              }
-            },
-            "filesystems": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/KubernetesFilesystemParams"
-              }
-            },
-            "placement": {
-              "type": "string"
-            },
-            "pod-spec": {
-              "type": "string"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "volumes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/KubernetesVolumeParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "pod-spec",
-            "constraints"
-          ]
-        },
-        "KubernetesProvisioningInfoResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/KubernetesProvisioningInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
-        },
-        "KubernetesProvisioningInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/KubernetesProvisioningInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "KubernetesVolumeAttachmentParams": {
-          "type": "object",
-          "properties": {
-            "provider": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider"
-          ]
-        },
-        "KubernetesVolumeInfo": {
-          "type": "object",
-          "properties": {
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "info": {
-              "type": "string"
-            },
-            "persistent": {
-              "type": "boolean"
-            },
-            "pool": {
-              "type": "string"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "status": {
-              "type": "string"
-            },
-            "volume-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "volume-id",
-            "size",
-            "persistent",
-            "status",
-            "info"
-          ]
-        },
-        "KubernetesVolumeParams": {
-          "type": "object",
-          "properties": {
-            "attachment": {
-              "$ref": "#/definitions/KubernetesVolumeAttachmentParams"
-            },
-            "attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "provider": {
-              "type": "string"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "storagename": {
-              "type": "string"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storagename",
-            "size",
-            "provider"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "UpdateApplicationServiceArg": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Address"
-              }
-            },
-            "application-tag": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-tag",
-            "provider-id",
-            "addresses"
-          ]
-        },
-        "UpdateApplicationServiceArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateApplicationServiceArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "UpdateApplicationUnitArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateApplicationUnits"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "UpdateApplicationUnits": {
-          "type": "object",
-          "properties": {
-            "application-tag": {
-              "type": "string"
-            },
-            "units": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationUnitParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-tag",
-            "units"
-          ]
-        },
-        "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"
-            },
-            "zones": {
-              "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
-        },
-        "CharmDevice": {
-          "type": "object",
-          "properties": {
-            "CountMax": {
-              "type": "integer"
-            },
-            "CountMin": {
-              "type": "integer"
-            },
-            "Description": {
-              "type": "string"
-            },
-            "Name": {
-              "type": "string"
-            },
-            "Type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Name",
-            "Description",
-            "Type",
-            "CountMin",
-            "CountMax"
-          ]
-        },
-        "CharmInfo": {
-          "type": "object",
-          "properties": {
-            "actions": {
-              "$ref": "#/definitions/CharmActions"
-            },
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CharmOption"
-                }
-              }
-            },
-            "lxd-profile": {
-              "$ref": "#/definitions/CharmLXDProfile"
-            },
-            "meta": {
-              "$ref": "#/definitions/CharmMeta"
-            },
-            "metrics": {
-              "$ref": "#/definitions/CharmMetrics"
-            },
-            "revision": {
-              "type": "integer"
-            },
-            "url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "revision",
-            "url",
-            "config"
-          ]
-        },
-        "CharmLXDProfile": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "description": {
-              "type": "string"
-            },
-            "devices": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "patternProperties": {
-                    ".*": {
-                      "type": "string"
-                    }
-                  }
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config",
-            "description",
-            "devices"
-          ]
-        },
-        "CharmMeta": {
-          "type": "object",
-          "properties": {
-            "categories": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "description": {
-              "type": "string"
-            },
-            "devices": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CharmDevice"
-                }
-              }
-            },
-            "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": 2,
-    "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"
-            },
-            "force": {
-              "type": "boolean"
-            },
-            "url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "url",
-            "channel",
-            "force"
-          ]
-        },
-        "AddCharmWithAuthorization": {
-          "type": "object",
-          "properties": {
-            "channel": {
-              "type": "string"
-            },
-            "force": {
-              "type": "boolean"
-            },
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "url",
-            "channel",
-            "macaroon",
-            "force"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ApplicationOfferStatus": {
-          "type": "object",
-          "properties": {
-            "active-connected-count": {
-              "type": "integer"
-            },
-            "application-name": {
-              "type": "string"
-            },
-            "charm": {
-              "type": "string"
-            },
-            "endpoints": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/RemoteEndpoint"
-                }
-              }
-            },
-            "err": {
-              "type": "object",
-              "additionalProperties": true
-            },
-            "offer-name": {
-              "type": "string"
-            },
-            "total-connected-count": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-name",
-            "application-name",
-            "charm",
-            "endpoints",
-            "active-connected-count",
-            "total-connected-count"
-          ]
-        },
-        "ApplicationStatus": {
-          "type": "object",
-          "properties": {
-            "can-upgrade-to": {
-              "type": "string"
-            },
-            "charm": {
-              "type": "string"
-            },
-            "charm-verion": {
-              "type": "string"
-            },
-            "endpoint-bindings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "err": {
-              "type": "object",
-              "additionalProperties": true
-            },
-            "exposed": {
-              "type": "boolean"
-            },
-            "int": {
-              "type": "integer"
-            },
-            "life": {
-              "type": "string"
-            },
-            "meter-statuses": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/MeterStatus"
-                }
-              }
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "public-address": {
-              "type": "string"
-            },
-            "relations": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
-                }
-              }
-            },
-            "series": {
-              "type": "string"
-            },
-            "status": {
-              "$ref": "#/definitions/DetailedStatus"
-            },
-            "string": {
-              "type": "string"
-            },
-            "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",
-            "charm-verion",
-            "endpoint-bindings",
-            "public-address"
-          ]
-        },
-        "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": {
-            "bundleURL": {
-              "type": "string"
-            },
-            "yaml": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "yaml",
-            "bundleURL"
-          ]
-        },
-        "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": {
-            "agentstream": {
-              "type": "string"
-            },
-            "arch": {
-              "type": "string"
-            },
-            "major": {
-              "type": "integer"
-            },
-            "minor": {
-              "type": "integer"
-            },
-            "number": {
-              "$ref": "#/definitions/Number"
-            },
-            "series": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "number",
-            "major",
-            "minor",
-            "arch",
-            "series",
-            "agentstream"
-          ]
-        },
-        "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"
-                }
-              }
-            },
-            "controller-timestamp": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "machines": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/MachineStatus"
-                }
-              }
-            },
-            "model": {
-              "$ref": "#/definitions/ModelStatusInfo"
-            },
-            "offers": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/ApplicationOfferStatus"
-                }
-              }
-            },
-            "relations": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationStatus"
-              }
-            },
-            "remote-applications": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/RemoteApplicationStatus"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model",
-            "machines",
-            "applications",
-            "remote-applications",
-            "offers",
-            "relations",
-            "controller-timestamp"
-          ]
-        },
-        "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"
-          ]
-        },
-        "LXDProfile": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "description": {
-              "type": "string"
-            },
-            "devices": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "patternProperties": {
-                    ".*": {
-                      "type": "string"
-                    }
-                  }
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config",
-            "description",
-            "devices"
-          ]
-        },
-        "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"
-              }
-            },
-            "lxd-profiles": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/LXDProfile"
-                }
-              }
-            },
-            "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUserInfo"
-              }
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "type",
-            "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"
-            },
-            "message": {
-              "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "version": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "type",
-            "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"
-            },
-            "status": {
-              "$ref": "#/definitions/DetailedStatus"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id",
-            "key",
-            "interface",
-            "scope",
-            "endpoints",
-            "status"
-          ]
-        },
-        "RemoteApplicationStatus": {
-          "type": "object",
-          "properties": {
-            "endpoints": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteEndpoint"
-              }
-            },
-            "err": {
-              "type": "object",
-              "additionalProperties": true
-            },
-            "life": {
-              "type": "string"
-            },
-            "offer-name": {
-              "type": "string"
-            },
-            "offer-url": {
-              "type": "string"
-            },
-            "relations": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
-                }
-              }
-            },
-            "status": {
-              "$ref": "#/definitions/DetailedStatus"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-url",
-            "offer-name",
-            "endpoints",
-            "life",
-            "relations",
-            "status"
-          ]
-        },
-        "RemoteEndpoint": {
-          "type": "object",
-          "properties": {
-            "interface": {
-              "type": "string"
-            },
-            "limit": {
-              "type": "integer"
-            },
-            "name": {
-              "type": "string"
-            },
-            "role": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "role",
-            "interface",
-            "limit"
-          ]
-        },
-        "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": {
-            "force": {
-              "type": "boolean"
-            },
-            "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": {
-            "address": {
-              "type": "string"
-            },
-            "agent-status": {
-              "$ref": "#/definitions/DetailedStatus"
-            },
-            "charm": {
-              "type": "string"
-            },
-            "leader": {
-              "type": "boolean"
-            },
-            "machine": {
-              "type": "string"
-            },
-            "opened-ports": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "provider-id": {
-              "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "Cloud",
-    "Version": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AddCloud": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddCloudArgs"
-            }
-          }
-        },
-        "AddCredentials": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/TaggedCredentials"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "CheckCredentialsModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/TaggedCredentials"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpdateCredentialResults"
-            }
-          }
-        },
-        "Cloud": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudResults"
-            }
-          }
-        },
-        "CloudInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudInfoResults"
-            }
-          }
-        },
-        "Clouds": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/CloudsResult"
-            }
-          }
-        },
-        "Credential": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudCredentialResults"
-            }
-          }
-        },
-        "CredentialContents": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/CloudCredentialArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/CredentialContentResults"
-            }
-          }
-        },
-        "DefaultCloud": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
-            }
-          }
-        },
-        "InstanceTypes": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/CloudInstanceTypesConstraints"
-            },
-            "Result": {
-              "$ref": "#/definitions/InstanceTypesResults"
-            }
-          }
-        },
-        "ListCloudInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ListCloudsRequest"
-            },
-            "Result": {
-              "$ref": "#/definitions/ListCloudInfoResults"
-            }
-          }
-        },
-        "ModifyCloudAccess": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModifyCloudAccessRequest"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RemoveClouds": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RevokeCredentialsCheckModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RevokeCredentialArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "UpdateCredentialsCheckModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateCredentialArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpdateCredentialResults"
-            }
-          }
-        },
-        "UserCredentials": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UserClouds"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "AddCloudArgs": {
-          "type": "object",
-          "properties": {
-            "cloud": {
-              "$ref": "#/definitions/Cloud"
-            },
-            "name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "cloud",
-            "name"
-          ]
-        },
-        "Cloud": {
-          "type": "object",
-          "properties": {
-            "auth-types": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "ca-certificates": {
-              "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"
-          ]
-        },
-        "CloudCredentialArg": {
-          "type": "object",
-          "properties": {
-            "cloud-name": {
-              "type": "string"
-            },
-            "credential-name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "cloud-name",
-            "credential-name"
-          ]
-        },
-        "CloudCredentialArgs": {
-          "type": "object",
-          "properties": {
-            "credentials": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudCredentialArg"
-              }
-            },
-            "include-secrets": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "include-secrets"
-          ]
-        },
-        "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
-        },
-        "CloudDetails": {
-          "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"
-          ]
-        },
-        "CloudInfo": {
-          "type": "object",
-          "properties": {
-            "CloudDetails": {
-              "$ref": "#/definitions/CloudDetails"
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudUserInfo"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "CloudDetails",
-            "users"
-          ]
-        },
-        "CloudInfoResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/CloudInfo"
-            }
-          },
-          "additionalProperties": false
-        },
-        "CloudInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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
-        },
-        "CloudUserInfo": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "display-name": {
-              "type": "string"
-            },
-            "user": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user",
-            "display-name",
-            "access"
-          ]
-        },
-        "CloudsResult": {
-          "type": "object",
-          "properties": {
-            "clouds": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/Cloud"
-                }
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "ControllerCredentialInfo": {
-          "type": "object",
-          "properties": {
-            "content": {
-              "$ref": "#/definitions/CredentialContent"
-            },
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelAccess"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "CredentialContent": {
-          "type": "object",
-          "properties": {
-            "attrs": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "auth-type": {
-              "type": "string"
-            },
-            "cloud": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "cloud",
-            "auth-type"
-          ]
-        },
-        "CredentialContentResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ControllerCredentialInfo"
-            }
-          },
-          "additionalProperties": false
-        },
-        "CredentialContentResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CredentialContentResult"
-              }
-            }
-          },
-          "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"
-          ]
-        },
-        "ListCloudInfo": {
-          "type": "object",
-          "properties": {
-            "CloudDetails": {
-              "$ref": "#/definitions/CloudDetails"
-            },
-            "user-access": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "CloudDetails",
-            "user-access"
-          ]
-        },
-        "ListCloudInfoResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ListCloudInfo"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ListCloudInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ListCloudInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "ListCloudsRequest": {
-          "type": "object",
-          "properties": {
-            "all": {
-              "type": "boolean"
-            },
-            "user-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user-tag"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "ModelAccess": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "model": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ModifyCloudAccess": {
-          "type": "object",
-          "properties": {
-            "access": {
-              "type": "string"
-            },
-            "action": {
-              "type": "string"
-            },
-            "cloud-tag": {
-              "type": "string"
-            },
-            "user-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user-tag",
-            "cloud-tag",
-            "action",
-            "access"
-          ]
-        },
-        "ModifyCloudAccessRequest": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModifyCloudAccess"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "changes"
-          ]
-        },
-        "RevokeCredentialArg": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "force"
-          ]
-        },
-        "RevokeCredentialArgs": {
-          "type": "object",
-          "properties": {
-            "credentials": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RevokeCredentialArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "credentials"
-          ]
-        },
-        "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"
-          ]
-        },
-        "TaggedCredential": {
-          "type": "object",
-          "properties": {
-            "credential": {
-              "$ref": "#/definitions/CloudCredential"
-            },
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "credential"
-          ]
-        },
-        "TaggedCredentials": {
-          "type": "object",
-          "properties": {
-            "credentials": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/TaggedCredential"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "UpdateCredentialArgs": {
-          "type": "object",
-          "properties": {
-            "credentials": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/TaggedCredential"
-              }
-            },
-            "force": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "credentials",
-            "force"
-          ]
-        },
-        "UpdateCredentialModelResult": {
-          "type": "object",
-          "properties": {
-            "errors": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            },
-            "name": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "uuid",
-            "name"
-          ]
-        },
-        "UpdateCredentialResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateCredentialModelResult"
-              }
-            },
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "UpdateCredentialResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateCredentialResult"
-              }
-            }
-          },
-          "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "Controller",
-    "Version": 5,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AllModels": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/UserModelList"
-            }
-          }
-        },
-        "CloudSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudSpecResults"
-            }
-          }
-        },
-        "ConfigSet": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ControllerConfigSet"
-            }
-          }
-        },
-        "ControllerAPIInfoForModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "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": {
-            "cacertificates": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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"
-          ]
-        },
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "ControllerConfigResult": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config"
-          ]
-        },
-        "ControllerConfigSet": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config"
-          ]
-        },
-        "DestroyControllerArgs": {
-          "type": "object",
-          "properties": {
-            "destroy-models": {
-              "type": "boolean"
-            },
-            "destroy-storage": {
-              "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "type",
-            "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"
-          ]
-        },
-        "ModelFilesystemInfo": {
-          "type": "object",
-          "properties": {
-            "detachable": {
-              "type": "boolean"
-            },
-            "id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id"
-          ]
-        },
-        "ModelMachineInfo": {
-          "type": "object",
-          "properties": {
-            "hardware": {
-              "$ref": "#/definitions/MachineHardware"
-            },
-            "has-vote": {
-              "type": "boolean"
-            },
-            "id": {
-              "type": "string"
-            },
-            "instance-id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            },
-            "wants-vote": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id"
-          ]
-        },
-        "ModelStatus": {
-          "type": "object",
-          "properties": {
-            "application-count": {
-              "type": "integer"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "filesystems": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelFilesystemInfo"
-              }
-            },
-            "hosted-machine-count": {
-              "type": "integer"
-            },
-            "life": {
-              "type": "string"
-            },
-            "machines": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelMachineInfo"
-              }
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "volumes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelVolumeInfo"
-              }
-            }
-          },
-          "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
-        },
-        "ModelVolumeInfo": {
-          "type": "object",
-          "properties": {
-            "detachable": {
-              "type": "boolean"
-            },
-            "id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id"
-          ]
-        },
-        "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": "CredentialManager",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "InvalidateModelCredential": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/InvalidateCredentialArg"
-            },
-            "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
-        },
-        "InvalidateCredentialArg": {
-          "type": "object",
-          "properties": {
-            "reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "CredentialValidator",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "InvalidateModelCredential": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/InvalidateCredentialArg"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResult"
-            }
-          }
-        },
-        "ModelCredential": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelCredential"
-            }
-          }
-        },
-        "WatchCredential": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entity"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchModelCredential": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "Entity": {
-          "type": "object",
-          "properties": {
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "message",
-            "code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "macaroon-path": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "InvalidateCredentialArg": {
-          "type": "object",
-          "properties": {
-            "reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "ModelCredential": {
-          "type": "object",
-          "properties": {
-            "credential-tag": {
-              "type": "string"
-            },
-            "exists": {
-              "type": "boolean"
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "valid": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "credential-tag"
-          ]
-        },
-        "NotifyWatchResult": {
-          "type": "object",
-          "properties": {
-            "NotifyWatcherId": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CrossController",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ControllerInfo": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "WatchControllerInfo": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "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
-        },
-        "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": "CrossModelRelations",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "PublishIngressNetworkChanges": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/IngressNetworksChanges"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "PublishRelationChanges": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteRelationsChanges"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RegisterRemoteRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RegisterRemoteRelationArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/RegisterRemoteRelationResults"
-            }
-          }
-        },
-        "RelationUnitSettings": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteRelationUnits"
-            },
-            "Result": {
-              "$ref": "#/definitions/SettingsResults"
-            }
-          }
-        },
-        "WatchEgressAddressesForRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteEntityArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchOfferStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/OfferArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/OfferStatusWatchResults"
-            }
-          }
-        },
-        "WatchRelationUnits": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteEntityArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationUnitsWatchResults"
-            }
-          }
-        },
-        "WatchRelationsSuspendedStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteEntityArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationStatusWatchResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "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"
-          ]
-        },
-        "IngressNetworksChangeEvent": {
-          "type": "object",
-          "properties": {
-            "application-token": {
-              "type": "string"
-            },
-            "ingress-required": {
-              "type": "boolean"
-            },
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "networks": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "relation-token": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token",
-            "application-token",
-            "ingress-required"
-          ]
-        },
-        "IngressNetworksChanges": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/IngressNetworksChangeEvent"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "OfferArg": {
-          "type": "object",
-          "properties": {
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "offer-uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-uuid"
-          ]
-        },
-        "OfferArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "OfferStatusChange": {
-          "type": "object",
-          "properties": {
-            "offer-name": {
-              "type": "string"
-            },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-name",
-            "status"
-          ]
-        },
-        "OfferStatusWatchResult": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferStatusChange"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id",
-            "changes"
-          ]
-        },
-        "OfferStatusWatchResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferStatusWatchResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RegisterRemoteRelationArg": {
-          "type": "object",
-          "properties": {
-            "application-token": {
-              "type": "string"
-            },
-            "local-endpoint-name": {
-              "type": "string"
-            },
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "offer-uuid": {
-              "type": "string"
-            },
-            "relation-token": {
-              "type": "string"
-            },
-            "remote-endpoint": {
-              "$ref": "#/definitions/RemoteEndpoint"
-            },
-            "remote-space": {
-              "$ref": "#/definitions/RemoteSpace"
-            },
-            "source-model-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-token",
-            "source-model-tag",
-            "relation-token",
-            "remote-endpoint",
-            "remote-space",
-            "offer-uuid",
-            "local-endpoint-name"
-          ]
-        },
-        "RegisterRemoteRelationArgs": {
-          "type": "object",
-          "properties": {
-            "relations": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RegisterRemoteRelationArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relations"
-          ]
-        },
-        "RegisterRemoteRelationResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/RemoteRelationDetails"
-            }
-          },
-          "additionalProperties": false
-        },
-        "RegisterRemoteRelationResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RegisterRemoteRelationResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "RelationLifeSuspendedStatusChange": {
-          "type": "object",
-          "properties": {
-            "key": {
-              "type": "string"
-            },
-            "life": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            },
-            "suspended-reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "key",
-            "life",
-            "suspended",
-            "suspended-reason"
-          ]
-        },
-        "RelationLifeSuspendedStatusWatchResult": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationLifeSuspendedStatusChange"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id",
-            "changes"
-          ]
-        },
-        "RelationStatusWatchResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationLifeSuspendedStatusWatchResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "RelationUnitsWatchResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationUnitsWatchResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RemoteEndpoint": {
-          "type": "object",
-          "properties": {
-            "interface": {
-              "type": "string"
-            },
-            "limit": {
-              "type": "integer"
-            },
-            "name": {
-              "type": "string"
-            },
-            "role": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "role",
-            "interface",
-            "limit"
-          ]
-        },
-        "RemoteEntityArg": {
-          "type": "object",
-          "properties": {
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "relation-token": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token"
-          ]
-        },
-        "RemoteEntityArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteEntityArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "RemoteRelationChangeEvent": {
-          "type": "object",
-          "properties": {
-            "application-token": {
-              "type": "string"
-            },
-            "changed-units": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationUnitChange"
-              }
-            },
-            "departed-units": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "force-cleanup": {
-              "type": "boolean"
-            },
-            "life": {
-              "type": "string"
-            },
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "relation-token": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            },
-            "suspended-reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token",
-            "application-token",
-            "life"
-          ]
-        },
-        "RemoteRelationDetails": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "relation-token": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token"
-          ]
-        },
-        "RemoteRelationUnit": {
-          "type": "object",
-          "properties": {
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "relation-token": {
-              "type": "string"
-            },
-            "unit": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token",
-            "unit"
-          ]
-        },
-        "RemoteRelationUnitChange": {
-          "type": "object",
-          "properties": {
-            "settings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "unit-id": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-id"
-          ]
-        },
-        "RemoteRelationUnits": {
-          "type": "object",
-          "properties": {
-            "relation-units": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationUnit"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-units"
-          ]
-        },
-        "RemoteRelationsChanges": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationChangeEvent"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "UnitSettings": {
-          "type": "object",
-          "properties": {
-            "version": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "version"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Deployer",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "DeployerConnectionValues": {
-          "type": "object",
-          "properties": {
-            "api-addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "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": "ExternalControllerUpdater",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ExternalControllerInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ExternalControllerInfoResults"
-            }
-          }
-        },
-        "SetExternalControllerInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetExternalControllersInfoParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchExternalControllers": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        }
-      },
-      "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"
-          ]
-        },
-        "ExternalControllerInfo": {
-          "type": "object",
-          "properties": {
-            "addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "ca-cert": {
-              "type": "string"
-            },
-            "controller-alias": {
-              "type": "string"
-            },
-            "controller-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "controller-tag",
-            "controller-alias",
-            "addrs",
-            "ca-cert"
-          ]
-        },
-        "ExternalControllerInfoResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ExternalControllerInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result",
-            "error"
-          ]
-        },
-        "ExternalControllerInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ExternalControllerInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "SetExternalControllerInfoParams": {
-          "type": "object",
-          "properties": {
-            "info": {
-              "$ref": "#/definitions/ExternalControllerInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "info"
-          ]
-        },
-        "SetExternalControllersInfoParams": {
-          "type": "object",
-          "properties": {
-            "controllers": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SetExternalControllerInfoParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "controllers"
-          ]
-        },
-        "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": "FanConfigurer",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "FanConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/FanConfigResult"
-            }
-          }
-        },
-        "WatchForFanConfigChanges": {
-          "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
-        },
-        "FanConfigEntry": {
-          "type": "object",
-          "properties": {
-            "overlay": {
-              "type": "string"
-            },
-            "underlay": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "underlay",
-            "overlay"
-          ]
-        },
-        "FanConfigResult": {
-          "type": "object",
-          "properties": {
-            "fans": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/FanConfigEntry"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "fans"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "NotifyWatchResult": {
-          "type": "object",
-          "properties": {
-            "NotifyWatcherId": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "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": "FirewallRules",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ListFirewallRules": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ListFirewallRulesResults"
-            }
-          }
-        },
-        "SetFirewallRules": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/FirewallRuleArgs"
-            },
-            "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"
-          ]
-        },
-        "FirewallRule": {
-          "type": "object",
-          "properties": {
-            "known-service": {
-              "type": "string"
-            },
-            "whitelist-cidrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "known-service"
-          ]
-        },
-        "FirewallRuleArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/FirewallRule"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "ListFirewallRulesResults": {
-          "type": "object",
-          "properties": {
-            "Rules": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/FirewallRule"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Rules"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "Firewaller",
-    "Version": 5,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AreManuallyProvisioned": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "CloudSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/CloudSpecResults"
-            }
-          }
-        },
-        "ControllerAPIInfoForModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "ControllerConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
-            }
-          }
-        },
-        "FirewallRules": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/KnownServiceArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ListFirewallRulesResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "MacaroonForRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/MacaroonResults"
-            }
-          }
-        },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
-        "SetRelationsStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "WatchEgressAddressesForRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchIngressAddressesForRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "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": {
-            "cacertificates": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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
-        },
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "FirewallRule": {
-          "type": "object",
-          "properties": {
-            "known-service": {
-              "type": "string"
-            },
-            "whitelist-cidrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "known-service"
-          ]
-        },
-        "KnownServiceArgs": {
-          "type": "object",
-          "properties": {
-            "known-services": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "known-services"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ListFirewallRulesResults": {
-          "type": "object",
-          "properties": {
-            "Rules": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/FirewallRule"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Rules"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "MacaroonResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/Macaroon"
-            }
-          },
-          "additionalProperties": false
-        },
-        "MacaroonResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MacaroonResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-            },
-            "Id": {
-              "type": "integer"
-            },
-            "Priority": {
-              "type": "number"
-            },
-            "Tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "Votes": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Id",
-            "Address",
-            "Priority",
-            "Tags",
-            "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "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": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "UpdateFromPublishedImages": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "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": 5,
-    "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"
-            }
-          }
-        },
-        "DestroyMachineWithParams": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyMachinesParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/DestroyMachineResults"
-            }
-          }
-        },
-        "ForceDestroyMachine": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/DestroyMachineResults"
-            }
-          }
-        },
-        "GetUpgradeSeriesMessages": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpgradeSeriesNotificationParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsResults"
-            }
-          }
-        },
-        "InstanceTypes": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelInstanceTypesConstraints"
-            },
-            "Result": {
-              "$ref": "#/definitions/InstanceTypesResults"
-            }
-          }
-        },
-        "UpgradeSeriesComplete": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateSeriesArg"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResult"
-            }
-          }
-        },
-        "UpgradeSeriesPrepare": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateSeriesArg"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResult"
-            }
-          }
-        },
-        "UpgradeSeriesValidate": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateSeriesArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpgradeSeriesUnitsResults"
-            }
-          }
-        },
-        "WatchUpgradeSeriesNotifications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        }
-      },
-      "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
-        },
-        "DestroyMachinesParams": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "keep": {
-              "type": "boolean"
-            },
-            "machine-tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "machine-tags"
-          ]
-        },
-        "Entities": {
-          "type": "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
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "Placement": {
-          "type": "object",
-          "properties": {
-            "directive": {
-              "type": "string"
-            },
-            "scope": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "scope",
-            "directive"
-          ]
-        },
-        "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"
-          ]
-        },
-        "UpdateSeriesArg": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "series": {
-              "type": "string"
-            },
-            "tag": {
-              "$ref": "#/definitions/Entity"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "force",
-            "series"
-          ]
-        },
-        "UpdateSeriesArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateSeriesArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "UpgradeSeriesNotificationParam": {
-          "type": "object",
-          "properties": {
-            "entity": {
-              "$ref": "#/definitions/Entity"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "watcher-id"
-          ]
-        },
-        "UpgradeSeriesNotificationParams": {
-          "type": "object",
-          "properties": {
-            "params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesNotificationParam"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "params"
-          ]
-        },
-        "UpgradeSeriesUnitsResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "unit-names": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-names"
-          ]
-        },
-        "UpgradeSeriesUnitsResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesUnitsResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "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"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "Entities": {
-          "type": "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"
-            },
-            "is-default-gateway": {
-              "type": "boolean"
-            },
-            "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"
-            },
-            "labels": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "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"
-          ]
-        },
-        "MeterStatusParams": {
-          "type": "object",
-          "properties": {
-            "statues": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MeterStatusParam"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "statues"
-          ]
-        },
-        "MetricResult": {
-          "type": "object",
-          "properties": {
-            "key": {
-              "type": "string"
-            },
-            "labels": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "time": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "unit": {
-              "type": "string"
-            },
-            "value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "time",
-            "key",
-            "value",
-            "unit",
-            "labels"
-          ]
-        },
-        "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"
-            }
-          }
-        },
-        "CheckMachines": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "message",
-            "code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "macaroon-path": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "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
-        },
-        "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": 2,
-    "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"
-            }
-          }
-        },
-        "Sequences": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelSequencesResult"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "ModelSequencesResult": {
-          "type": "object",
-          "properties": {
-            "sequences": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "integer"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "sequences"
-          ]
-        },
-        "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": 5,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ChangeModelCredential": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ChangeModelCredentialsParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "CreateModel": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelCreateArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ModelInfo"
-            }
-          }
-        },
-        "DestroyModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyModelsParams"
-            },
-            "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"
-            }
-          }
-        },
-        "ListModelSummaries": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelSummariesRequest"
-            },
-            "Result": {
-              "$ref": "#/definitions/ModelSummaryResults"
-            }
-          }
-        },
-        "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": {
-        "ChangeModelCredentialParams": {
-          "type": "object",
-          "properties": {
-            "credential-tag": {
-              "type": "string"
-            },
-            "model-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "credential-tag"
-          ]
-        },
-        "ChangeModelCredentialsParams": {
-          "type": "object",
-          "properties": {
-            "model-credentials": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ChangeModelCredentialParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-credentials"
-          ]
-        },
-        "DestroyModelParams": {
-          "type": "object",
-          "properties": {
-            "destroy-storage": {
-              "type": "boolean"
-            },
-            "model-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag"
-          ]
-        },
-        "DestroyModelsParams": {
-          "type": "object",
-          "properties": {
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/DestroyModelParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "models"
-          ]
-        },
-        "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "type",
-            "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"
-          ]
-        },
-        "ModelEntityCount": {
-          "type": "object",
-          "properties": {
-            "count": {
-              "type": "integer"
-            },
-            "entity": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "count"
-          ]
-        },
-        "ModelFilesystemInfo": {
-          "type": "object",
-          "properties": {
-            "detachable": {
-              "type": "boolean"
-            },
-            "id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id"
-          ]
-        },
-        "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUserInfo"
-              }
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "type",
-            "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"
-            },
-            "message": {
-              "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"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "filesystems": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelFilesystemInfo"
-              }
-            },
-            "hosted-machine-count": {
-              "type": "integer"
-            },
-            "life": {
-              "type": "string"
-            },
-            "machines": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelMachineInfo"
-              }
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "volumes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelVolumeInfo"
-              }
-            }
-          },
-          "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"
-          ]
-        },
-        "ModelSummariesRequest": {
-          "type": "object",
-          "properties": {
-            "all": {
-              "type": "boolean"
-            },
-            "user-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user-tag"
-          ]
-        },
-        "ModelSummary": {
-          "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"
-            },
-            "counts": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelEntityCount"
-              }
-            },
-            "default-series": {
-              "type": "string"
-            },
-            "last-connection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "life": {
-              "type": "string"
-            },
-            "migration": {
-              "$ref": "#/definitions/ModelMigrationStatus"
-            },
-            "name": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "provider-type": {
-              "type": "string"
-            },
-            "sla": {
-              "$ref": "#/definitions/ModelSLAInfo"
-            },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            },
-            "type": {
-              "type": "string"
-            },
-            "user-access": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "type",
-            "controller-uuid",
-            "cloud-tag",
-            "owner-tag",
-            "life",
-            "user-access",
-            "last-connection",
-            "counts",
-            "sla",
-            "agent-version"
-          ]
-        },
-        "ModelSummaryResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ModelSummary"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ModelSummaryResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelSummaryResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ModelVolumeInfo": {
-          "type": "object",
-          "properties": {
-            "detachable": {
-              "type": "boolean"
-            },
-            "id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "id"
-          ]
-        },
-        "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": "ModelUpgrader",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ModelEnvironVersion": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/IntResults"
-            }
-          }
-        },
-        "ModelTargetEnvironVersion": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/IntResults"
-            }
-          }
-        },
-        "SetModelEnvironVersion": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetModelEnvironVersions"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetModelStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchModelEnvironVersion": {
-          "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "SetModelEnvironVersion": {
-          "type": "object",
-          "properties": {
-            "model-tag": {
-              "type": "string"
-            },
-            "version": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "version"
-          ]
-        },
-        "SetModelEnvironVersions": {
-          "type": "object",
-          "properties": {
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SetModelEnvironVersion"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "SetStatus": {
-          "type": "object",
-          "properties": {
-            "entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityStatusArgs"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entities"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "NotifyWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "OfferStatusWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/OfferStatusWatchResult"
-            }
-          }
-        },
-        "Stop": {
-          "type": "object"
-        }
-      },
-      "definitions": {
-        "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
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "OfferStatusChange": {
-          "type": "object",
-          "properties": {
-            "offer-name": {
-              "type": "string"
-            },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "offer-name",
-            "status"
-          ]
-        },
-        "OfferStatusWatchResult": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/OfferStatusChange"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id",
-            "changes"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "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": 7,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "AvailabilityZone": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "CACert": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/BytesResult"
-            }
-          }
-        },
-        "CharmProfileChangeInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ProfileChangeResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "ControllerAPIInfoForModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "ControllerConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
-            }
-          }
-        },
-        "DistributionGroup": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/DistributionGroupResults"
-            }
-          }
-        },
-        "DistributionGroupByMachineId": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "GetContainerProfileInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ContainerProfileResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "KeepInstance": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "RemoveUpgradeCharmProfileData": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Series": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "SetCharmProfiles": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetProfileArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "SetUpgradeCharmProfileComplete": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetProfileUpgradeCompleteArgs"
-            },
-            "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"
-            }
-          }
-        },
-        "WatchContainersCharmProfiles": {
-          "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"
-            }
-          }
-        },
-        "WatchModelMachinesCharmProfiles": {
-          "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "CharmLXDProfile": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "description": {
-              "type": "string"
-            },
-            "devices": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "patternProperties": {
-                    ".*": {
-                      "type": "string"
-                    }
-                  }
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config",
-            "description",
-            "devices"
-          ]
-        },
-        "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"
-            },
-            "cloudinit-userdata": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "container-inherit-properties": {
-              "type": "string"
-            },
-            "juju-proxy": {
-              "$ref": "#/definitions/Settings"
-            },
-            "legacy-proxy": {
-              "$ref": "#/definitions/Settings"
-            },
-            "provider-type": {
-              "type": "string"
-            },
-            "snap-proxy": {
-              "$ref": "#/definitions/Settings"
-            },
-            "ssl-hostname-verification": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider-type",
-            "authorized-keys",
-            "ssl-hostname-verification",
-            "legacy-proxy",
-            "juju-proxy",
-            "apt-proxy",
-            "snap-proxy",
-            "apt-mirror",
-            "UpdateBehavior"
-          ]
-        },
-        "ContainerLXDProfile": {
-          "type": "object",
-          "properties": {
-            "name": {
-              "type": "string"
-            },
-            "profile": {
-              "$ref": "#/definitions/CharmLXDProfile"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "profile",
-            "name"
-          ]
-        },
-        "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"
-          ]
-        },
-        "ContainerProfileResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "lxd-profiles": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ContainerLXDProfile"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "ContainerProfileResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ContainerProfileResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-            },
-            "mac-address": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "host-device-name",
-            "bridge-name",
-            "mac-address"
-          ]
-        },
-        "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": {
-            "agentstream": {
-              "type": "string"
-            },
-            "arch": {
-              "type": "string"
-            },
-            "major": {
-              "type": "integer"
-            },
-            "minor": {
-              "type": "integer"
-            },
-            "number": {
-              "$ref": "#/definitions/Number"
-            },
-            "series": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "number",
-            "major",
-            "minor",
-            "arch",
-            "series",
-            "agentstream"
-          ]
-        },
-        "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"
-            },
-            "charm-profiles": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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",
-            "charm-profiles"
-          ]
-        },
-        "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"
-            },
-            "is-default-gateway": {
-              "type": "boolean"
-            },
-            "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"
-          ]
-        },
-        "ProfileChangeResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "new-profile-name": {
-              "type": "string"
-            },
-            "old-profile-name": {
-              "type": "string"
-            },
-            "profile": {
-              "$ref": "#/definitions/CharmLXDProfile"
-            },
-            "subordinate": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ProfileChangeResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ProfileChangeResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "ProvisioningInfo": {
-          "type": "object",
-          "properties": {
-            "charm-lxd-profiles": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cloudinit-userdata": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "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"
-          ]
-        },
-        "SetProfileArg": {
-          "type": "object",
-          "properties": {
-            "entity": {
-              "$ref": "#/definitions/Entity"
-            },
-            "profiles": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "profiles"
-          ]
-        },
-        "SetProfileArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SetProfileArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "SetProfileUpgradeCompleteArg": {
-          "type": "object",
-          "properties": {
-            "entity": {
-              "$ref": "#/definitions/Entity"
-            },
-            "message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "message"
-          ]
-        },
-        "SetProfileUpgradeCompleteArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SetProfileUpgradeCompleteArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "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
-        },
-        "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"
-          ]
-        },
-        "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"
-            },
-            "zones": {
-              "type": "array",
-              "items": {
-                "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"
-            },
-            "plan-info": {
-              "$ref": "#/definitions/VolumeAttachmentPlanInfo"
-            },
-            "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"
-          ]
-        },
-        "VolumeAttachmentPlanInfo": {
-          "type": "object",
-          "properties": {
-            "device-attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "device-type": {
-              "type": "string"
-            }
-          },
-          "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"
-          ]
-        },
-        "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": 2,
-    "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"
-            },
-            "juju-proxy-settings": {
-              "$ref": "#/definitions/ProxyConfig"
-            },
-            "legacy-proxy-settings": {
-              "$ref": "#/definitions/ProxyConfig"
-            },
-            "snap-proxy-settings": {
-              "$ref": "#/definitions/ProxyConfig"
-            },
-            "snap-store-assertions": {
-              "type": "string"
-            },
-            "snap-store-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "legacy-proxy-settings",
-            "juju-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": "RelationStatusWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/RelationLifeSuspendedStatusWatchResult"
-            }
-          }
-        },
-        "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
-        },
-        "RelationLifeSuspendedStatusChange": {
-          "type": "object",
-          "properties": {
-            "key": {
-              "type": "string"
-            },
-            "life": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            },
-            "suspended-reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "key",
-            "life",
-            "suspended",
-            "suspended-reason"
-          ]
-        },
-        "RelationLifeSuspendedStatusWatchResult": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationLifeSuspendedStatusChange"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id",
-            "changes"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "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": "RemoteRelations",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ConsumeRemoteRelationChanges": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteRelationsChanges"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "ControllerAPIInfoForModels": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllerAPIInfoResults"
-            }
-          }
-        },
-        "ControllerConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
-            }
-          }
-        },
-        "ExportEntities": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/TokenResults"
-            }
-          }
-        },
-        "GetTokens": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/GetTokenArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "ImportRemoteEntities": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoteEntityTokenArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RelationUnitSettings": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RelationUnits"
-            },
-            "Result": {
-              "$ref": "#/definitions/SettingsResults"
-            }
-          }
-        },
-        "Relations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RemoteRelationResults"
-            }
-          }
-        },
-        "RemoteApplications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RemoteApplicationResults"
-            }
-          }
-        },
-        "SaveMacaroons": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntityMacaroonArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetRemoteApplicationsStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchLocalRelationUnits": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationUnitsWatchResults"
-            }
-          }
-        },
-        "WatchRemoteApplicationRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchRemoteApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        },
-        "WatchRemoteRelations": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "ControllerAPIInfoResult": {
-          "type": "object",
-          "properties": {
-            "addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "cacert": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "addresses",
-            "cacert"
-          ]
-        },
-        "ControllerAPIInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllerAPIInfoResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "EntityMacaroonArg": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "macaroon",
-            "tag"
-          ]
-        },
-        "EntityMacaroonArgs": {
-          "type": "object",
-          "properties": {
-            "Args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityMacaroonArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Args"
-          ]
-        },
-        "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"
-          ]
-        },
-        "GetTokenArg": {
-          "type": "object",
-          "properties": {
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "GetTokenArgs": {
-          "type": "object",
-          "properties": {
-            "Args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/GetTokenArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Args"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "RelationUnit": {
-          "type": "object",
-          "properties": {
-            "relation": {
-              "type": "string"
-            },
-            "unit": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation",
-            "unit"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "RemoteApplication": {
-          "type": "object",
-          "properties": {
-            "is-consumer-proxy": {
-              "type": "boolean"
-            },
-            "life": {
-              "type": "string"
-            },
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "model-uuid": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            },
-            "offer-uuid": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "offer-uuid",
-            "model-uuid",
-            "is-consumer-proxy"
-          ]
-        },
-        "RemoteApplicationResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/RemoteApplication"
-            }
-          },
-          "additionalProperties": false
-        },
-        "RemoteApplicationResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteApplicationResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "RemoteEndpoint": {
-          "type": "object",
-          "properties": {
-            "interface": {
-              "type": "string"
-            },
-            "limit": {
-              "type": "integer"
-            },
-            "name": {
-              "type": "string"
-            },
-            "role": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "role",
-            "interface",
-            "limit"
-          ]
-        },
-        "RemoteEntityTokenArg": {
-          "type": "object",
-          "properties": {
-            "tag": {
-              "type": "string"
-            },
-            "token": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "RemoteEntityTokenArgs": {
-          "type": "object",
-          "properties": {
-            "Args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteEntityTokenArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Args"
-          ]
-        },
-        "RemoteRelation": {
-          "type": "object",
-          "properties": {
-            "application-name": {
-              "type": "string"
-            },
-            "endpoint": {
-              "$ref": "#/definitions/RemoteEndpoint"
-            },
-            "id": {
-              "type": "integer"
-            },
-            "key": {
-              "type": "string"
-            },
-            "life": {
-              "type": "string"
-            },
-            "remote-application-name": {
-              "type": "string"
-            },
-            "remote-endpoint-name": {
-              "type": "string"
-            },
-            "source-model-uuid": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "life",
-            "suspended",
-            "id",
-            "key",
-            "application-name",
-            "endpoint",
-            "remote-application-name",
-            "remote-endpoint-name",
-            "source-model-uuid"
-          ]
-        },
-        "RemoteRelationChangeEvent": {
-          "type": "object",
-          "properties": {
-            "application-token": {
-              "type": "string"
-            },
-            "changed-units": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationUnitChange"
-              }
-            },
-            "departed-units": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "force-cleanup": {
-              "type": "boolean"
-            },
-            "life": {
-              "type": "string"
-            },
-            "macaroons": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Macaroon"
-              }
-            },
-            "relation-token": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            },
-            "suspended-reason": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-token",
-            "application-token",
-            "life"
-          ]
-        },
-        "RemoteRelationResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/RemoteRelation"
-            }
-          },
-          "additionalProperties": false
-        },
-        "RemoteRelationResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RemoteRelationUnitChange": {
-          "type": "object",
-          "properties": {
-            "settings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "unit-id": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-id"
-          ]
-        },
-        "RemoteRelationsChanges": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoteRelationChangeEvent"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "TokenResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "token": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "TokenResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/TokenResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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"
-            },
-            "force": {
-              "type": "boolean"
-            },
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "url": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "url",
-            "channel",
-            "macaroon",
-            "force"
-          ]
-        },
-        "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": 2,
-    "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": {
-            "claimant-tag": {
-              "type": "string"
-            },
-            "duration": {
-              "type": "integer"
-            },
-            "entity-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity-tag",
-            "claimant-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": 4,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AddToUnit": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/StoragesAddParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/AddStorageResults"
-            }
-          }
-        },
-        "Attach": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/StorageAttachmentIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "CreatePool": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/StoragePool"
-            }
-          }
-        },
-        "Detach": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/StorageAttachmentIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Import": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/BulkImportStorageParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ImportStorageResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "Remove": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoveStorage"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "StorageDetails": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StorageDetailsResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "AddStorageDetails": {
-          "type": "object",
-          "properties": {
-            "storage-tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storage-tags"
-          ]
-        },
-        "AddStorageResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/AddStorageDetails"
-            }
-          },
-          "additionalProperties": false
-        },
-        "AddStorageResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/AddStorageResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "BulkImportStorageParams": {
-          "type": "object",
-          "properties": {
-            "storage": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ImportStorageParams"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storage"
-          ]
-        },
-        "Entities": {
-          "type": "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"
-            },
-            "unit-attachments": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/FilesystemAttachmentDetails"
-                }
-              }
-            },
-            "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"
-          ]
-        },
-        "ImportStorageDetails": {
-          "type": "object",
-          "properties": {
-            "storage-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storage-tag"
-          ]
-        },
-        "ImportStorageParams": {
-          "type": "object",
-          "properties": {
-            "kind": {
-              "type": "integer"
-            },
-            "pool": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "storage-name": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "kind",
-            "pool",
-            "provider-id",
-            "storage-name"
-          ]
-        },
-        "ImportStorageResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ImportStorageDetails"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ImportStorageResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ImportStorageResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "RemoveStorage": {
-          "type": "object",
-          "properties": {
-            "storage": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoveStorageInstance"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "storage"
-          ]
-        },
-        "RemoveStorageInstance": {
-          "type": "object",
-          "properties": {
-            "destroy-attachments": {
-              "type": "boolean"
-            },
-            "destroy-storage": {
-              "type": "boolean"
-            },
-            "tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "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"
-            },
-            "plan-info": {
-              "$ref": "#/definitions/VolumeAttachmentPlanInfo"
-            },
-            "read-only": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false
-        },
-        "VolumeAttachmentPlanInfo": {
-          "type": "object",
-          "properties": {
-            "device-attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "device-type": {
-              "type": "string"
-            }
-          },
-          "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"
-            },
-            "unit-attachments": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/VolumeAttachmentDetails"
-                }
-              }
-            },
-            "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": 4,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AttachmentLife": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachineStorageIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "CreateVolumeAttachmentPlans": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/VolumeAttachmentPlans"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "RemoveFilesystemParams": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RemoveFilesystemParamsResults"
-            }
-          }
-        },
-        "RemoveVolumeAttachmentPlan": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachineStorageIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "RemoveVolumeParams": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RemoveVolumeParamsResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "SetVolumeAttachmentPlanBlockInfo": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/VolumeAttachmentPlans"
-            },
-            "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"
-            }
-          }
-        },
-        "VolumeAttachmentPlans": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachineStorageIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/VolumeAttachmentPlanResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "WatchApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "WatchVolumeAttachmentPlans": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/MachineStorageIdsWatchResults"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "RemoveFilesystemParams": {
-          "type": "object",
-          "properties": {
-            "destroy": {
-              "type": "boolean"
-            },
-            "filesystem-id": {
-              "type": "string"
-            },
-            "provider": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider",
-            "filesystem-id"
-          ]
-        },
-        "RemoveFilesystemParamsResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/RemoveFilesystemParams"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
-        },
-        "RemoveFilesystemParamsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoveFilesystemParamsResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "RemoveVolumeParams": {
-          "type": "object",
-          "properties": {
-            "destroy": {
-              "type": "boolean"
-            },
-            "provider": {
-              "type": "string"
-            },
-            "volume-id": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "provider",
-            "volume-id"
-          ]
-        },
-        "RemoveVolumeParamsResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/RemoveVolumeParams"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
-        },
-        "RemoveVolumeParamsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RemoveVolumeParamsResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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"
-            },
-            "plan-info": {
-              "$ref": "#/definitions/VolumeAttachmentPlanInfo"
-            },
-            "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
-        },
-        "VolumeAttachmentPlan": {
-          "type": "object",
-          "properties": {
-            "block-device": {
-              "$ref": "#/definitions/BlockDevice"
-            },
-            "life": {
-              "type": "string"
-            },
-            "machine-tag": {
-              "type": "string"
-            },
-            "plan-info": {
-              "$ref": "#/definitions/VolumeAttachmentPlanInfo"
-            },
-            "volume-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "volume-tag",
-            "machine-tag",
-            "plan-info"
-          ]
-        },
-        "VolumeAttachmentPlanInfo": {
-          "type": "object",
-          "properties": {
-            "device-attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "device-type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "VolumeAttachmentPlanResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/VolumeAttachmentPlan"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
-        },
-        "VolumeAttachmentPlanResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/VolumeAttachmentPlanResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "VolumeAttachmentPlans": {
-          "type": "object",
-          "properties": {
-            "volume-plans": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/VolumeAttachmentPlan"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "volume-plans"
-          ]
-        },
-        "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": 9,
-    "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"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "CloudSpec": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/CloudSpecResult"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "GoalStates": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/GoalStateResults"
-            }
-          }
-        },
-        "HasSubordinates": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "Refresh": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/UnitRefreshResults"
-            }
-          }
-        },
-        "Relation": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RelationUnits"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationResults"
-            }
-          }
-        },
-        "RelationById": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RelationIds"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationResults"
-            }
-          }
-        },
-        "RelationsStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RelationUnitStatusResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "SetPodSpec": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetPodSpecParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetRelationStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RelationStatusArgs"
-            },
-            "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"
-            }
-          }
-        },
-        "SetUpgradeSeriesUnitStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpgradeSeriesStatusParams"
-            },
-            "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"
-            }
-          }
-        },
-        "UpgradeSeriesUnitStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpgradeSeriesStatusResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "WatchConfigSettingsHash": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "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"
-            }
-          }
-        },
-        "WatchTrustConfigSettingsHash": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchUnitAddressesHash": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchUnitRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchUnitStorageAttachments": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchUpgradeSeriesNotifications": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "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"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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": {
-            "cacertificates": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "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
-        },
-        "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"
-          ]
-        },
-        "EntityString": {
-          "type": "object",
-          "properties": {
-            "tag": {
-              "type": "string"
-            },
-            "value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "value"
-          ]
-        },
-        "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"
-          ]
-        },
-        "GoalState": {
-          "type": "object",
-          "properties": {
-            "relations": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "patternProperties": {
-                    ".*": {
-                      "$ref": "#/definitions/GoalStateStatus"
-                    }
-                  }
-                }
-              }
-            },
-            "units": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/GoalStateStatus"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "units",
-            "relations"
-          ]
-        },
-        "GoalStateResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/GoalState"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result",
-            "error"
-          ]
-        },
-        "GoalStateResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/GoalStateResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "GoalStateStatus": {
-          "type": "object",
-          "properties": {
-            "since": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "status",
-            "since"
-          ]
-        },
-        "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"
-            },
-            "hostname": {
-              "type": "string"
-            },
-            "value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "hostname",
-            "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"
-                }
-              }
-            },
-            "unit-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "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"
-            },
-            "labels": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "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"
-            },
-            "type": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "type"
-          ]
-        },
-        "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"
-              }
-            },
-            "relation-id": {
-              "type": "integer"
-            },
-            "unit": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit",
-            "bindings"
-          ]
-        },
-        "NetworkInfoResult": {
-          "type": "object",
-          "properties": {
-            "bind-addresses": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/NetworkInfo"
-              }
-            },
-            "egress-subnets": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "ingress-addresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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": {
-            "bool": {
-              "type": "boolean"
-            },
-            "endpoint": {
-              "$ref": "#/definitions/Endpoint"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "id": {
-              "type": "integer"
-            },
-            "key": {
-              "type": "string"
-            },
-            "life": {
-              "type": "string"
-            },
-            "other-application": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "life",
-            "id",
-            "key",
-            "endpoint"
-          ]
-        },
-        "RelationResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RelationStatusArg": {
-          "type": "object",
-          "properties": {
-            "message": {
-              "type": "string"
-            },
-            "relation-id": {
-              "type": "integer"
-            },
-            "status": {
-              "type": "string"
-            },
-            "unit-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "unit-tag",
-            "relation-id",
-            "status",
-            "message"
-          ]
-        },
-        "RelationStatusArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationStatusArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "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"
-          ]
-        },
-        "RelationUnitStatus": {
-          "type": "object",
-          "properties": {
-            "in-scope": {
-              "type": "boolean"
-            },
-            "relation-tag": {
-              "type": "string"
-            },
-            "suspended": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "relation-tag",
-            "in-scope",
-            "suspended"
-          ]
-        },
-        "RelationUnitStatusResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationUnitStatus"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "RelationUnitStatusResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationUnitStatusResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "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"
-          ]
-        },
-        "SetPodSpecParams": {
-          "type": "object",
-          "properties": {
-            "specs": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityString"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "specs"
-          ]
-        },
-        "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
-        },
-        "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"
-          ]
-        },
-        "UnitRefreshResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Life": {
-              "type": "string"
-            },
-            "Resolved": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Life",
-            "Resolved",
-            "Error"
-          ]
-        },
-        "UnitRefreshResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UnitRefreshResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "UnitSettings": {
-          "type": "object",
-          "properties": {
-            "version": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "version"
-          ]
-        },
-        "UpgradeSeriesStatusParam": {
-          "type": "object",
-          "properties": {
-            "entity": {
-              "$ref": "#/definitions/Entity"
-            },
-            "message": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "status",
-            "message"
-          ]
-        },
-        "UpgradeSeriesStatusParams": {
-          "type": "object",
-          "properties": {
-            "params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesStatusParam"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "params"
-          ]
-        },
-        "UpgradeSeriesStatusResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "UpgradeSeriesStatusResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesStatusResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "Name": "UpgradeSeries",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "FinishUpgradeSeries": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpdateSeriesArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "MachineStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpgradeSeriesStatusResults"
-            }
-          }
-        },
-        "PinMachineApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/PinApplicationsResults"
-            }
-          }
-        },
-        "PinnedLeadership": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/PinnedLeadershipResult"
-            }
-          }
-        },
-        "SetMachineStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpgradeSeriesStatusParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetUpgradeSeriesUnitStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpgradeSeriesStatusParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "StartUnitCompletion": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UpgradeSeriesStartUnitCompletionParam"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "TargetSeries": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "UnitsCompleted": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/EntitiesResults"
-            }
-          }
-        },
-        "UnitsPrepared": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/EntitiesResults"
-            }
-          }
-        },
-        "UnpinMachineApplications": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/PinApplicationsResults"
-            }
-          }
-        },
-        "UpgradeSeriesUnitStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/UpgradeSeriesStatusResults"
-            }
-          }
-        },
-        "WatchUpgradeSeriesNotifications": {
-          "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
-        },
-        "ErrorResult": {
-          "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"
-          ]
-        },
-        "PinApplicationResult": {
-          "type": "object",
-          "properties": {
-            "application-name": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "application-name"
-          ]
-        },
-        "PinApplicationsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/PinApplicationResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "PinnedLeadershipResult": {
-          "type": "object",
-          "properties": {
-            "result": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
-                }
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "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"
-          ]
-        },
-        "UpdateSeriesArg": {
-          "type": "object",
-          "properties": {
-            "force": {
-              "type": "boolean"
-            },
-            "series": {
-              "type": "string"
-            },
-            "tag": {
-              "$ref": "#/definitions/Entity"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "force",
-            "series"
-          ]
-        },
-        "UpdateSeriesArgs": {
-          "type": "object",
-          "properties": {
-            "args": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpdateSeriesArg"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "args"
-          ]
-        },
-        "UpgradeSeriesStartUnitCompletionParam": {
-          "type": "object",
-          "properties": {
-            "entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
-            },
-            "message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entities",
-            "message"
-          ]
-        },
-        "UpgradeSeriesStatusParam": {
-          "type": "object",
-          "properties": {
-            "entity": {
-              "$ref": "#/definitions/Entity"
-            },
-            "message": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity",
-            "status",
-            "message"
-          ]
-        },
-        "UpgradeSeriesStatusParams": {
-          "type": "object",
-          "properties": {
-            "params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesStatusParam"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "params"
-          ]
-        },
-        "UpgradeSeriesStatusResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "status": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "UpgradeSeriesStatusResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UpgradeSeriesStatusResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        }
-      }
-    }
-  },
-  {
-    "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": 2,
-    "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"
-            }
-          }
-        },
-        "ResetPassword": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/AddUserResults"
-            }
-          }
-        },
-        "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": "VolumeAttachmentPlansWatcher",
-    "Version": 1,
-    "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": "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 --git a/modules/libjuju/juju/cloud.py b/modules/libjuju/juju/cloud.py
deleted file mode 100644
index e4793ee..0000000
--- a/modules/libjuju/juju/cloud.py
+++ /dev/null
@@ -1,81 +0,0 @@
-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 --git a/modules/libjuju/juju/constraints.py b/modules/libjuju/juju/constraints.py
deleted file mode 100644
index 0050673..0000000
--- a/modules/libjuju/juju/constraints.py
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# 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
-}
-
-LIST_KEYS = {'tags', 'spaces'}
-
-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_list_value(v) if k in LIST_KEYS else
-            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 value.isdigit():
-        return int(value)
-
-    return value
-
-
-def normalize_list_value(value):
-    values = value.strip().split(',')
-    return [normalize_value(value) for value in values]
diff --git a/modules/libjuju/juju/controller.py b/modules/libjuju/juju/controller.py
deleted file mode 100644
index ed9b744..0000000
--- a/modules/libjuju/juju/controller.py
+++ /dev/null
@@ -1,653 +0,0 @@
-# Copyright 2019 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.
-import asyncio
-import json
-import logging
-from pathlib import Path
-
-from . import errors, tag, utils
-from .client import client, connector
-from .user import User
-
-log = logging.getLogger(__name__)
-
-
-class Controller:
-    def __init__(
-        self,
-        loop=None,
-        max_frame_size=None,
-        bakery_client=None,
-        jujudata=None,
-    ):
-        """Instantiate a new Controller.
-
-        One of the connect_* methods will need to be called before this
-        object can be used for anything interesting.
-
-        If jujudata is None, jujudata.FileJujuData will be used.
-
-        :param loop: an asyncio event loop
-        :param max_frame_size: See
-            `juju.client.connection.Connection.MAX_FRAME_SIZE`
-        :param bakery_client httpbakery.Client: The bakery client to use
-            for macaroon authorization.
-        :param jujudata JujuData: The source for current controller
-        information.
-        """
-        self._connector = connector.Connector(
-            loop=loop,
-            max_frame_size=max_frame_size,
-            bakery_client=bakery_client,
-            jujudata=jujudata,
-        )
-
-    async def __aenter__(self):
-        await self.connect()
-        return self
-
-    async def __aexit__(self, exc_type, exc, tb):
-        await self.disconnect()
-
-    @property
-    def loop(self):
-        return self._connector.loop
-
-    async def connect(self, *args, **kwargs):
-        """Connect to a Juju controller.
-
-        This supports two calling conventions:
-
-        The controller and (optionally) authentication information can be
-        taken from the data files created by the Juju CLI.  This convention
-        will be used if a ``controller_name`` is specified, or if the
-        ``endpoint`` is not.
-
-        Otherwise, both the ``endpoint`` and authentication information
-        (``username`` and ``password``, or ``bakery_client`` and/or
-        ``macaroons``) are required.
-
-        If a single positional argument is given, it will be assumed to be
-        the ``controller_name``.  Otherwise, the first positional argument,
-        if any, must be the ``endpoint``.
-
-        Available parameters are:
-
-        :param str controller_name:  Name of controller registered with the
-            Juju CLI.
-        :param str endpoint: The hostname:port of the controller to connect to.
-        :param str username: The username for controller-local users (or None
-            to use macaroon-based login.)
-        :param str password: The password for controller-local users.
-        :param str cacert: The CA certificate of the controller
-            (PEM formatted).
-        :param httpbakery.Client bakery_client: The macaroon bakery client to
-            to use when performing macaroon-based login. Macaroon tokens
-            acquired when logging will be saved to bakery_client.cookies.
-            If this is None, a default bakery_client will be used.
-        :param list macaroons: List of macaroons to load into the
-            ``bakery_client``.
-        :param asyncio.BaseEventLoop loop: The event loop to use for async
-            operations.
-        :param int max_frame_size: The maximum websocket frame size to allow.
-        """
-        await self.disconnect()
-        if 'endpoint' not in kwargs and len(args) < 2:
-            if args and 'model_name' in kwargs:
-                raise TypeError('connect() got multiple values for '
-                                'controller_name')
-            elif args:
-                controller_name = args[0]
-            else:
-                controller_name = kwargs.pop('controller_name', None)
-            await self._connector.connect_controller(controller_name, **kwargs)
-        else:
-            if 'controller_name' in kwargs:
-                raise TypeError('connect() got values for both '
-                                'controller_name and endpoint')
-            if args and 'endpoint' in kwargs:
-                raise TypeError('connect() got multiple values for endpoint')
-            has_userpass = (len(args) >= 3 or
-                            {'username', 'password'}.issubset(kwargs))
-            has_macaroons = (len(args) >= 5 or not
-                             {'bakery_client', 'macaroons'}.isdisjoint(kwargs))
-            if not (has_userpass or has_macaroons):
-                raise TypeError('connect() missing auth params')
-            arg_names = [
-                'endpoint',
-                'username',
-                'password',
-                'cacert',
-                'bakery_client',
-                'macaroons',
-                'loop',
-                'max_frame_size',
-            ]
-            for i, arg in enumerate(args):
-                kwargs[arg_names[i]] = arg
-            if 'endpoint' not in kwargs:
-                raise ValueError('endpoint is required '
-                                 'if controller_name not given')
-            if not ({'username', 'password'}.issubset(kwargs) or
-                    {'bakery_client', 'macaroons'}.intersection(kwargs)):
-                raise ValueError('Authentication parameters are required '
-                                 'if controller_name not given')
-            await self._connector.connect(**kwargs)
-
-    async def connect_current(self):
-        """
-        .. deprecated:: 0.7.3
-           Use :meth:`.connect()` instead.
-        """
-        return await self.connect()
-
-    async def connect_controller(self, controller_name):
-        """
-        .. deprecated:: 0.7.3
-           Use :meth:`.connect(controller_name)` instead.
-        """
-        return await self.connect(controller_name)
-
-    async def _connect_direct(self, **kwargs):
-        await self.disconnect()
-        await self._connector.connect(**kwargs)
-
-    def is_connected(self):
-        """Reports whether the Controller is currently connected."""
-        return self._connector.is_connected()
-
-    def connection(self):
-        """Return the current Connection object. It raises an exception
-        if the Controller is disconnected"""
-        return self._connector.connection()
-
-    @property
-    def controller_name(self):
-        return self._connector.controller_name
-
-    async def disconnect(self):
-        """Shut down the watcher task and close websockets.
-
-        """
-        await self._connector.disconnect()
-
-    async def add_credential(self, name=None, credential=None, cloud=None,
-                             owner=None, force=False):
-        """Add or update a credential to the controller.
-
-        :param str name: Name of new credential. If None, the default
-            local credential is used.  Name must be provided if a credential
-            is given.
-        :param CloudCredential credential: Credential to add. If not given,
-            it will attempt to read from local data, if available.
-        :param str cloud: Name of cloud to associate the credential with.
-            Defaults to the same cloud as the controller.
-        :param str owner: Username that will own the credential. Defaults to
-            the current user.
-        :param bool force: Force indicates whether the update should be forced.
-            It's only supported for facade v3 or later.
-            Defaults to false.
-        :returns: Name of credential that was uploaded.
-        """
-        if not cloud:
-            cloud = await self.get_cloud()
-
-        if not owner:
-            owner = self.connection().info['user-info']['identity']
-
-        if credential and not name:
-            raise errors.JujuError('Name must be provided for credential')
-
-        if not credential:
-            name, credential = self._connector.jujudata.load_credential(cloud,
-                                                                        name)
-            if credential is None:
-                raise errors.JujuError(
-                    'Unable to find credential: {}'.format(name))
-
-        if credential.auth_type == 'jsonfile' and 'file' in credential.attrs:
-            # file creds have to be loaded before being sent to the controller
-            try:
-                # it might already be JSON
-                json.loads(credential.attrs['file'])
-            except json.JSONDecodeError:
-                # not valid JSON, so maybe it's a file
-                cred_path = Path(credential.attrs['file'])
-                if cred_path.exists():
-                    # make a copy
-                    cred_json = credential.to_json()
-                    credential = client.CloudCredential.from_json(cred_json)
-                    # inline the cred
-                    credential.attrs['file'] = cred_path.read_text()
-
-        log.debug('Uploading credential %s', name)
-        cloud_facade = client.CloudFacade.from_connection(self.connection())
-        tagged_credentials = [
-            client.UpdateCloudCredential(
-                tag=tag.credential(cloud, tag.untag('user-', owner), name),
-                credential=credential,
-            )]
-        if cloud_facade.version >= 3:
-            # UpdateCredentials was renamed to UpdateCredentialsCheckModels
-            # in facade version 3.
-            await cloud_facade.UpdateCredentialsCheckModels(
-                credentials=tagged_credentials, force=force,
-            )
-        else:
-            await cloud_facade.UpdateCredentials(tagged_credentials)
-        return name
-
-    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. If not given, it will attempt to find a
-            default credential.
-        :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.
-        :return Model: A connection to the newly created 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()
-
-        try:
-            # attempt to add/update the credential from local data if available
-            credential_name = await self.add_credential(
-                name=credential_name,
-                cloud=cloud_name,
-                owner=owner)
-        except errors.JujuError:
-            # if it's not available locally, assume it's on the controller
-            pass
-
-        if credential_name:
-            credential = tag.credential(
-                cloud_name,
-                tag.untag('user-', owner),
-                credential_name
-            )
-        else:
-            credential = None
-
-        log.debug('Creating model %s', model_name)
-
-        if not config or 'authorized-keys' not in config:
-            config = config or {}
-            config['authorized-keys'] = await utils.read_ssh_key(
-                loop=self._connector.loop)
-
-        model_info = await model_facade.CreateModel(
-            tag.cloud(cloud_name),
-            config,
-            credential,
-            model_name,
-            owner,
-            region
-        )
-
-        # This is a temporary workaround for a race condition:
-        # https://bugs.launchpad.net/juju/+bug/1838774
-        # This will be fixed when Juju 2.6.7 is released.
-        import time
-        time.sleep(5)
-
-        from juju.model import Model
-        model = Model(jujudata=self._connector.jujudata)
-        kwargs = self.connection().connect_params()
-        kwargs['uuid'] = model_info.uuid
-        await model._connect_direct(**kwargs)
-
-        return model
-
-    async def destroy_models(self, *models, destroy_storage=False):
-        """Destroy one or more models.
-
-        :param str *models: Names or UUIDs of models to destroy
-        :param bool destroy_storage: Whether or not to destroy storage when
-            destroying the models. Defaults to false.
-
-        """
-        uuids = await self.model_uuids()
-        models = [uuids[model] if model in uuids else model
-                  for model in models]
-
-        model_facade = client.ModelManagerFacade.from_connection(
-            self.connection())
-
-        log.debug(
-            'Destroying model%s %s',
-            '' if len(models) == 1 else 's',
-            ', '.join(models)
-        )
-
-        if model_facade.version >= 5:
-            params = [
-                client.DestroyModelParams(model_tag=tag.model(model),
-                                          destroy_storage=destroy_storage)
-                for model in models]
-        else:
-            params = [client.Entity(tag.model(model)) for model in models]
-
-        await model_facade.DestroyModels(params)
-    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 password: Password
-        :param str display_name: Display name
-        :returns: A :class:`~juju.user.User` instance
-        """
-        if not display_name:
-            display_name = username
-        user_facade = client.UserManagerFacade.from_connection(
-            self.connection())
-        users = [client.AddUser(display_name=display_name,
-                                username=username,
-                                password=password)]
-        results = await user_facade.AddUser(users)
-        secret_key = results.results[0].secret_key
-        return await self.get_user(username, secret_key=secret_key)
-
-    async def remove_user(self, username):
-        """Remove a user from this controller.
-        """
-        client_facade = client.UserManagerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        await client_facade.RemoveUser([client.Entity(user)])
-
-    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 reset_user_password(self, username):
-        """Reset user password.
-
-        :param str username: Username
-        :returns: A :class:`~juju.user.User` instance
-        """
-        user_facade = client.UserManagerFacade.from_connection(
-            self.connection())
-        entity = client.Entity(tag.user(username))
-        results = await user_facade.ResetPassword([entity])
-        secret_key = results.results[0].secret_key
-        return await self.get_user(username, secret_key=secret_key)
-
-    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):
-        """
-        .. deprecated:: 0.7.0
-           Use :meth:`.list_models` instead.
-        """
-        controller_facade = client.ControllerFacade.from_connection(
-            self.connection())
-        for attempt in (1, 2, 3):
-            try:
-                return await controller_facade.AllModels()
-            except errors.JujuAPIError as e:
-                # retry concurrency error until resolved in Juju
-                # see: https://bugs.launchpad.net/juju/+bug/1721786
-                if 'has been removed' not in e.message or attempt == 3:
-                    raise
-
-    async def model_uuids(self):
-        """Return a mapping of model names to UUIDs.
-        """
-        controller_facade = client.ControllerFacade.from_connection(
-            self.connection())
-        for attempt in (1, 2, 3):
-            try:
-                response = await controller_facade.AllModels()
-                return {um.model.name: um.model.uuid
-                        for um in response.user_models}
-            except errors.JujuAPIError as e:
-                # retry concurrency error until resolved in Juju
-                # see: https://bugs.launchpad.net/juju/+bug/1721786
-                if 'has been removed' not in e.message or attempt == 3:
-                    raise
-                await asyncio.sleep(attempt, loop=self._connector.loop)
-
-    async def list_models(self):
-        """Return list of names of the available models on this controller.
-
-        Equivalent to ``sorted((await self.model_uuids()).keys())``
-        """
-        uuids = await self.model_uuids()
-        return sorted(uuids.keys())
-
-    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 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()
-
-    async def get_model(self, model):
-        """Get a model by name or UUID.
-
-        :param str model: Model name or UUID
-        :returns Model: Connected Model instance.
-        """
-        uuids = await self.model_uuids()
-        if model in uuids:
-            uuid = uuids[model]
-        else:
-            uuid = model
-
-        from juju.model import Model
-        model = Model()
-        kwargs = self.connection().connect_params()
-        kwargs['uuid'] = uuid
-        await model._connect_direct(**kwargs)
-        return model
-
-    async def get_user(self, username, secret_key=None):
-        """Get a user by name.
-
-        :param str username: Username
-        :param str secret_key: Issued by juju when add or reset user
-            password
-        :returns: A :class:`~juju.user.User` instance
-        """
-        client_facade = client.UserManagerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        args = [client.Entity(user)]
-        try:
-            response = await client_facade.UserInfo(args, True)
-        except errors.JujuError as e:
-            if 'permission denied' in e.errors:
-                # apparently, trying to get info for a nonexistent user returns
-                # a "permission denied" error rather than an empty result set
-                return None
-            raise
-        if response.results and response.results[0].result:
-            return User(self, response.results[0].result, secret_key=secret_key)
-        return None
-
-    async def get_users(self, include_disabled=False):
-        """Return list of users that can connect to this controller.
-
-        :param bool include_disabled: Include disabled users
-        :returns: A list of :class:`~juju.user.User` instances
-        """
-        client_facade = client.UserManagerFacade.from_connection(
-            self.connection())
-        response = await client_facade.UserInfo(None, include_disabled)
-        return [User(self, r.result) for r in response.results]
-
-    async def grant(self, username, acl='login'):
-        """Grant access level of the given user on the controller.
-        Note that if the user already has higher permissions than the
-        provided ACL, this will do nothing (see revoke for a way to
-        remove permissions).
-        :param str username: Username
-        :param str acl: Access control ('login', 'add-model' or 'superuser')
-        :returns: True if new access was granted, False if user already had
-            requested access or greater.  Raises JujuError if failed.
-        """
-        controller_facade = client.ControllerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        changes = client.ModifyControllerAccess(acl, 'grant', user)
-        try:
-            await controller_facade.ModifyControllerAccess([changes])
-            return True
-        except errors.JujuError as e:
-            if 'user already has' in str(e):
-                return False
-            else:
-                raise
-
-    async def revoke(self, username, acl='login'):
-        """Removes some or all access of a user to from a controller
-        If 'login' access is revoked, the user will no longer have any
-        permissions on the controller. Revoking a higher privilege from
-        a user without that privilege will have no effect.
-
-        :param str username: username
-        :param str acl: Access to remove ('login', 'add-model' or 'superuser')
-        """
-        controller_facade = client.ControllerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        changes = client.ModifyControllerAccess('login', 'revoke', user)
-        return await controller_facade.ModifyControllerAccess([changes])
-
-    async def grant_model(self, username, model_uuid, acl='read'):
-        """Grant a user access to a model. Note that if the user
-        already has higher permissions than the provided ACL,
-        this will do nothing (see revoke_model for a way to remove
-        permissions).
-
-        :param str username: Username
-        :param str model_uuid: The UUID of the model to change.
-        :param str acl: Access control ('read, 'write' or 'admin')
-        """
-        model_facade = client.ModelManagerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        model = tag.model(model_uuid)
-        changes = client.ModifyModelAccess(acl, 'grant', model, user)
-        return await model_facade.ModifyModelAccess([changes])
-
-    async def revoke_model(self, username, model_uuid, acl='read'):
-        """Revoke some or all of a user's access to a model.
-        If 'read' access is revoked, the user will no longer have any
-        permissions on the model. Revoking a higher privilege from
-        a user without that privilege will have no effect.
-
-        :param str username: Username to revoke
-        :param str model_uuid: The UUID of the model to change.
-        :param str acl: Access control ('read, 'write' or 'admin')
-        """
-        model_facade = client.ModelManagerFacade.from_connection(
-            self.connection())
-        user = tag.user(username)
-        model = tag.model(model_uuid)
-        changes = client.ModifyModelAccess(acl, 'revoke', model, user)
-        return await model_facade.ModifyModelAccess([changes])
diff --git a/modules/libjuju/juju/credential.py b/modules/libjuju/juju/credential.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/juju/credential.py
+++ /dev/null
diff --git a/modules/libjuju/juju/delta.py b/modules/libjuju/juju/delta.py
deleted file mode 100644
index b1eba23..0000000
--- a/modules/libjuju/juju/delta.py
+++ /dev/null
@@ -1,79 +0,0 @@
-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 --git a/modules/libjuju/juju/errors.py b/modules/libjuju/juju/errors.py
deleted file mode 100644
index da11cdb..0000000
--- a/modules/libjuju/juju/errors.py
+++ /dev/null
@@ -1,49 +0,0 @@
-class JujuError(Exception):
-    def __init__(self, *args, **kwargs):
-        self.message = ''
-        self.errors = []
-        if args:
-            self.message = str(args[0])
-            if isinstance(args[0], (list, tuple)):
-                self.errors = args[0]
-            elif len(args) > 1:
-                self.errors = list(args)
-            else:
-                self.errors = [self.message]
-        super().__init__(*args, **kwargs)
-
-
-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
-
-
-class JujuAuthError(JujuConnectionError):
-    pass
-
-
-class JujuRedirectException(Exception):
-    """Exception indicating that a redirection was requested"""
-    def __init__(self, redirect_info):
-        self.redirect_info = redirect_info
-
-    @property
-    def ca_cert(self):
-        return self.redirect_info['ca-cert']
-
-    @property
-    def endpoints(self):
-        return [
-            ('{value}:{port}'.format(**s), self.ca_cert)
-            for servers in self.redirect_info['servers']
-            for s in servers if s['scope'] == 'public'
-        ]
diff --git a/modules/libjuju/juju/exceptions.py b/modules/libjuju/juju/exceptions.py
deleted file mode 100644
index bcf07b6..0000000
--- a/modules/libjuju/juju/exceptions.py
+++ /dev/null
@@ -1,2 +0,0 @@
-class DeadEntityException(Exception):
-    pass
diff --git a/modules/libjuju/juju/juju.py b/modules/libjuju/juju/juju.py
deleted file mode 100644
index 444155f..0000000
--- a/modules/libjuju/juju/juju.py
+++ /dev/null
@@ -1,118 +0,0 @@
-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 --git a/modules/libjuju/juju/loop.py b/modules/libjuju/juju/loop.py
deleted file mode 100644
index aca726b..0000000
--- a/modules/libjuju/juju/loop.py
+++ /dev/null
@@ -1,42 +0,0 @@
-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, OSError, RuntimeError) 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 --git a/modules/libjuju/juju/machine.py b/modules/libjuju/juju/machine.py
deleted file mode 100644
index 39bfa11..0000000
--- a/modules/libjuju/juju/machine.py
+++ /dev/null
@@ -1,284 +0,0 @@
-import asyncio
-import logging
-import os
-
-import pyrfc3339
-
-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.model.loop.create_task(self._queue_workarounds())
-
-    async def _queue_workarounds(self):
-        model = self.model
-        if not model.info:
-            await utils.run_with_interrupt(model.get_info(),
-                                           model._watch_stopping,
-                                           loop=model.loop)
-        if model._watch_stopping.is_set():
-            return
-        if model.info.agent_version < client.Number.from_json('2.2.3'):
-            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,
-                                                     loop=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 = pyrfc3339.parse(machine['instance-status']['since'])
-        delta_since = pyrfc3339.parse(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 scp_opts: Additional options to the `scp` command
-        :type scp_opts: str or list
-        """
-        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 scp_opts: Additional options to the `scp` command
-        :type scp_opts: str or list
-        """
-        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',
-            '-q',
-            '-B'
-        ]
-        cmd.extend(scp_opts.split() if isinstance(scp_opts, str) else scp_opts)
-        cmd.extend([source, destination])
-        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 pyrfc3339.parse(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 pyrfc3339.parse(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
-
-    @property
-    def series(self):
-        """Returns the series of the current machine
-
-        """
-        return self.safe_data['series']
diff --git a/modules/libjuju/juju/model.py b/modules/libjuju/juju/model.py
deleted file mode 100644
index 9a14add..0000000
--- a/modules/libjuju/juju/model.py
+++ /dev/null
@@ -1,2328 +0,0 @@
-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 theblues.charmstore
-import theblues.errors
-import websockets
-import yaml
-
-from . import tag, utils
-from .client import client, connector
-from .client.client import ConfigValue
-from .client.client import Value
-from .constraints import parse as parse_constraints
-from .constraints import normalize_key
-from .delta import get_entity_class, get_entity_delta
-from .errors import JujuAPIError, JujuError
-from .exceptions import DeadEntityException
-from .placement import parse as parse_placement
-from . import provisioner
-
-
-log = logging.getLogger(__name__)
-
-
-class _Observer:
-    """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:
-    """
-    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:
-    """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')
-
-    @property
-    def relations(self):
-        """Return a map of relation-id:Relation for all relations currently in
-        the model.
-
-        """
-        return self._live_entity_map('relation')
-
-    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:
-    """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:
-    """
-    The main API for interacting with a Juju model.
-    """
-    def __init__(
-        self,
-        loop=None,
-        max_frame_size=None,
-        bakery_client=None,
-        jujudata=None,
-    ):
-        """Instantiate a new Model.
-
-        The connect method will need to be called before this
-        object can be used for anything interesting.
-
-        If jujudata is None, jujudata.FileJujuData will be used.
-
-        :param loop: an asyncio event loop
-        :param max_frame_size: See
-            `juju.client.connection.Connection.MAX_FRAME_SIZE`
-        :param bakery_client httpbakery.Client: The bakery client to use
-            for macaroon authorization.
-        :param jujudata JujuData: The source for current controller information
-        """
-        self._connector = connector.Connector(
-            loop=loop,
-            max_frame_size=max_frame_size,
-            bakery_client=bakery_client,
-            jujudata=jujudata,
-        )
-        self._observers = weakref.WeakValueDictionary()
-        self.state = ModelState(self)
-        self._info = None
-        self._watch_stopping = asyncio.Event(loop=self._connector.loop)
-        self._watch_stopped = asyncio.Event(loop=self._connector.loop)
-        self._watch_received = asyncio.Event(loop=self._connector.loop)
-        self._watch_stopped.set()
-        self._charmstore = CharmStore(self._connector.loop)
-
-    def is_connected(self):
-        """Reports whether the Model is currently connected."""
-        return self._connector.is_connected()
-
-    @property
-    def loop(self):
-        return self._connector.loop
-
-    def connection(self):
-        """Return the current Connection object. It raises an exception
-        if the Model is disconnected"""
-        return self._connector.connection()
-
-    async def get_controller(self):
-        """Return a Controller instance for the currently connected model.
-        :return Controller:
-        """
-        from juju.controller import Controller
-        controller = Controller(jujudata=self._connector.jujudata)
-        kwargs = self.connection().connect_params()
-        kwargs.pop('uuid')
-        await controller._connect_direct(**kwargs)
-        return controller
-
-    async def __aenter__(self):
-        await self.connect()
-        return self
-
-    async def __aexit__(self, exc_type, exc, tb):
-        await self.disconnect()
-
-    async def connect(self, *args, **kwargs):
-        """Connect to a juju model.
-
-        This supports two calling conventions:
-
-        The model and (optionally) authentication information can be taken
-        from the data files created by the Juju CLI.  This convention will
-        be used if a ``model_name`` is specified, or if the ``endpoint``
-        and ``uuid`` are not.
-
-        Otherwise, all of the ``endpoint``, ``uuid``, and authentication
-        information (``username`` and ``password``, or ``bakery_client`` and/or
-        ``macaroons``) are required.
-
-        If a single positional argument is given, it will be assumed to be
-        the ``model_name``.  Otherwise, the first positional argument, if any,
-        must be the ``endpoint``.
-
-        Available parameters are:
-
-        :param model_name:  Format [controller:][user/]model
-        :param str endpoint: The hostname:port of the controller to connect to.
-        :param str uuid: The model UUID to connect to.
-        :param str username: The username for controller-local users (or None
-            to use macaroon-based login.)
-        :param str password: The password for controller-local users.
-        :param str cacert: The CA certificate of the controller
-            (PEM formatted).
-        :param httpbakery.Client bakery_client: The macaroon bakery client to
-            to use when performing macaroon-based login. Macaroon tokens
-            acquired when logging will be saved to bakery_client.cookies.
-            If this is None, a default bakery_client will be used.
-        :param list macaroons: List of macaroons to load into the
-            ``bakery_client``.
-        :param asyncio.BaseEventLoop loop: The event loop to use for async
-            operations.
-        :param int max_frame_size: The maximum websocket frame size to allow.
-        """
-        await self.disconnect()
-        if 'endpoint' not in kwargs and len(args) < 2:
-            if args and 'model_name' in kwargs:
-                raise TypeError('connect() got multiple values for model_name')
-            elif args:
-                model_name = args[0]
-            else:
-                model_name = kwargs.pop('model_name', None)
-            await self._connector.connect_model(model_name, **kwargs)
-        else:
-            if 'model_name' in kwargs:
-                raise TypeError('connect() got values for both '
-                                'model_name and endpoint')
-            if args and 'endpoint' in kwargs:
-                raise TypeError('connect() got multiple values for endpoint')
-            if len(args) < 2 and 'uuid' not in kwargs:
-                raise TypeError('connect() missing value for uuid')
-            has_userpass = (len(args) >= 4 or
-                            {'username', 'password'}.issubset(kwargs))
-            has_macaroons = (len(args) >= 6 or not
-                             {'bakery_client', 'macaroons'}.isdisjoint(kwargs))
-            if not (has_userpass or has_macaroons):
-                raise TypeError('connect() missing auth params')
-            arg_names = [
-                'endpoint',
-                'uuid',
-                'username',
-                'password',
-                'cacert',
-                'bakery_client',
-                'macaroons',
-                'loop',
-                'max_frame_size',
-            ]
-            for i, arg in enumerate(args):
-                kwargs[arg_names[i]] = arg
-            if not {'endpoint', 'uuid'}.issubset(kwargs):
-                raise ValueError('endpoint and uuid are required '
-                                 'if model_name not given')
-            if not ({'username', 'password'}.issubset(kwargs) or
-                    {'bakery_client', 'macaroons'}.intersection(kwargs)):
-                raise ValueError('Authentication parameters are required '
-                                 'if model_name not given')
-            await self._connector.connect(**kwargs)
-        await self._after_connect()
-
-    async def connect_model(self, model_name):
-        """
-        .. deprecated:: 0.6.2
-           Use ``connect(model_name=model_name)`` instead.
-        """
-        return await self.connect(model_name=model_name)
-
-    async def connect_current(self):
-        """
-        .. deprecated:: 0.6.2
-           Use ``connect()`` instead.
-        """
-        return await self.connect()
-
-    async def _connect_direct(self, **kwargs):
-        await self.disconnect()
-        await self._connector.connect(**kwargs)
-        await self._after_connect()
-
-    async def _after_connect(self):
-        self._watch()
-
-        # Wait for the first packet of data from the AllWatcher,
-        # which contains all information on the model.
-        # TODO this means that we can't do anything until
-        # we've received all the model data, which might be
-        # a whole load of unneeded data if all the client wants
-        # to do is make one RPC call.
-        await self._watch_received.wait()
-
-        await self.get_info()
-
-    async def disconnect(self):
-        """Shut down the watcher task and close websockets.
-
-        """
-        if not self._watch_stopped.is_set():
-            log.debug('Stopping watcher task')
-            self._watch_stopping.set()
-            await self._watch_stopped.wait()
-            self._watch_stopping.clear()
-
-        if self.is_connected():
-            log.debug('Closing model connection')
-            await self._connector.disconnect()
-            self._info = 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._connector.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.
-
-        Raises `websockets.ConnectionClosed` if disconnected.
-        """
-        def _disconnected():
-            return not (self.is_connected() and self.connection().is_open)
-
-        def done():
-            return _disconnected() or all(c() for c in conditions)
-
-        await utils.block_until(done,
-                                timeout=timeout,
-                                wait_period=wait_period,
-                                loop=self.loop)
-        if _disconnected():
-            raise websockets.ConnectionClosed(1006, 'no reason')
-
-    @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
-
-    @property
-    def relations(self):
-        """Return a list of all Relations currently in the model.
-
-        """
-        return list(self.state.relations.values())
-
-    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
-
-    @property
-    def info(self):
-        """Return the cached client.ModelInfo object for this Model.
-
-        If Model.get_info() has not been called, this will return None.
-        """
-        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,
-                            loop=self._connector.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()
-                            if monitor.status != monitor.CONNECTED:
-                                # reconnect failed; abort and shutdown
-                                log.error('Watcher: automatic reconnect '
-                                          'failed; stopping watcher')
-                                break
-                            del allwatcher.Id
-                            continue
-                        else:
-                            # closed on request, go ahead and shutdown
-                            break
-                    if self._watch_stopping.is_set():
-                        try:
-                            await allwatcher.Stop()
-                        except websockets.ConnectionClosed:
-                            pass  # can't stop on a closed conn
-                        break
-                    for delta in results.deltas:
-                        try:
-                            delta = get_entity_delta(delta)
-                            old_obj, new_obj = self.state.apply_delta(delta)
-                            await self._notify_observers(delta, old_obj, new_obj)
-                        except KeyError as e:
-                            log.debug("unknown delta type: %s", e.args[0])
-                    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._connector.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._connector.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._connector.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):
-        """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``
-        to appear in the model.  This is similar to watching for the
-        object using ``block_until``, but uses the watcher rather than
-        polling.
-
-        """
-        # 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]
-        return await self._wait(entity_type, entity_id, None)
-
-    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, None, 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:/path/to/private/key' - manually provision
-                a machine with ssh and the private key used for authentication
-                '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()
-
-        if spec:
-            if spec.startswith("ssh:"):
-                placement, target, private_key_path = spec.split(":")
-                user, host = target.split("@")
-
-                sshProvisioner = provisioner.SSHProvisioner(
-                    host=host,
-                    user=user,
-                    private_key_path=private_key_path,
-                )
-
-                params = sshProvisioner.provision_machine()
-            else:
-                placement = parse_placement(spec)
-                if placement:
-                    params.placement = placement[0]
-
-        params.jobs = ['JobHostUnits']
-
-        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
-
-        if spec:
-            if spec.startswith("ssh:"):
-                # Need to run this after AddMachines has been called,
-                # as we need the machine_id
-                await sshProvisioner.install_agent(
-                    self.connection(),
-                    params.nonce,
-                    machine_id,
-                )
-
-        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: '<application>[:<relation_name>]'
-        :param str relation2: '<application>[:<relation_name>]'
-
-        """
-        connection = self.connection()
-        app_facade = client.ApplicationFacade.from_connection(connection)
-
-        log.debug(
-            'Adding relation %s <-> %s', relation1, relation2)
-
-        def _find_relation(*specs):
-            for rel in self.relations:
-                if rel.matches(*specs):
-                    return rel
-            return None
-
-        try:
-            result = await app_facade.AddRelation([relation1, relation2])
-        except JujuAPIError as e:
-            if 'relation already exists' not in e.message:
-                raise
-            rel = _find_relation(relation1, relation2)
-            if rel:
-                return rel
-            raise JujuError('Relation {} {} exists but not in model'.format(
-                relation1, relation2))
-
-        specs = ['{}:{}'.format(app, data['name'])
-                 for app, data in result.endpoints.items()]
-
-        await self.block_until(lambda: _find_relation(*specs) is not None)
-        return _find_relation(*specs)
-
-    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, devices=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: <charm endpoint>:<network space> pairs
-        :param dict budget: <budget name>:<limit> 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: <resource name>:<file path> 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()
-            }
-
-        entity_path = Path(entity_url.replace('local:', ''))
-        bundle_path = entity_path / 'bundle.yaml'
-        metadata_path = entity_path / 'metadata.yaml'
-
-        is_local = (
-            entity_url.startswith('local:') or
-            entity_path.is_dir() or
-            entity_path.is_file()
-        )
-        if is_local:
-            entity_id = entity_url.replace('local:', '')
-        else:
-            entity = await self.charmstore.entity(entity_url, channel=channel,
-                                                  include_stats=False)
-            entity_id = entity['Id']
-
-        client_facade = client.ClientFacade.from_connection(self.connection())
-
-        is_bundle = ((is_local and
-                      (entity_id.endswith('.yaml') and entity_path.exists()) or
-                      bundle_path.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._connector.loop)
-                    for app_name in pending_apps
-                ], loop=self._connector.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=entity)
-            else:
-                if not application_name:
-                    metadata = yaml.load(metadata_path.read_text())
-                    application_name = metadata['name']
-                # 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),
-                devices=devices,
-            )
-
-    async def _add_store_resources(self, application, entity_url,
-                                   overrides=None, entity=None):
-        if not entity:
-            # avoid extra charm store call if one was already made
-            entity = await self.charmstore.entity(entity_url,
-                                                  include_stats=False)
-        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 overrides:
-            names = {r['name'] for r in resources}
-            unknown = overrides.keys() - names
-            if unknown:
-                raise JujuError('Unrecognized resource{}: {}'.format(
-                    's' if len(unknown) > 1 else '',
-                    ', '.join(unknown)))
-            for resource in resources:
-                if resource['name'] in overrides:
-                    resource['revision'] = overrides[resource['name']]
-
-        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,
-                      devices=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,
-            devices=devices,
-        )
-        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.
-
-        """
-        connection = self.connection()
-        app_facade = client.ApplicationFacade.from_connection(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
-
-    async def get_constraints(self):
-        """Return the machine constraints for this model.
-
-        :returns: A ``dict`` of constraints.
-        """
-        constraints = {}
-        client_facade = client.ClientFacade.from_connection(self.connection())
-        result = await client_facade.GetModelConstraints()
-
-        # GetModelConstraints returns GetConstraintsResults which has a
-        # 'constraints' attribute. If no constraints have been set
-        # GetConstraintsResults.constraints is None. Otherwise
-        # GetConstraintsResults.constraints has an attribute for each possible
-        # constraint, each of these in turn will be None if they have not been
-        # set.
-        if result.constraints:
-            constraint_types = [a for a in dir(result.constraints)
-                                if a in Value._toSchema.keys()]
-            for constraint in constraint_types:
-                value = getattr(result.constraints, constraint)
-                if value is not None:
-                    constraints[constraint] = getattr(result.constraints,
-                                                      constraint)
-        return constraints
-
-    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 <lp|gh>:<username>
-
-        """
-        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()
-
-    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)
-
-    async def set_constraints(self, constraints):
-        """Set machine constraints on this model.
-
-        :param dict config: Mapping of model constraints
-        """
-        client_facade = client.ClientFacade.from_connection(self.connection())
-        await client_facade.SetModelConstraints(
-            application='',
-            constraints=constraints)
-
-    async def get_action_output(self, action_uuid, wait=None):
-        """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.
-        :return dict: Output from action
-        :raises: :class:`JujuError` if invalid action_uuid
-        """
-        action_facade = client.ActionFacade.from_connection(
-            self.connection()
-        )
-        entity = [{'tag': tag.action(action_uuid)}]
-        # Cannot use self.wait_for_action as the action event has probably
-        # already happened and self.wait_for_action works by processing
-        # model deltas and checking if they match our type. If the action
-        # has already occured then the delta has gone.
-
-        async def _wait_for_action_status():
-            while True:
-                action_output = await action_facade.Actions(entity)
-                if action_output.results[0].status in ('completed', 'failed'):
-                    return
-                else:
-                    await asyncio.sleep(1)
-        await asyncio.wait_for(
-            _wait_for_action_status(),
-            timeout=wait)
-        action_output = await action_facade.Actions(entity)
-        # ActionResult.output is None if the action produced no output
-        if action_output.results[0].output is None:
-            output = {}
-        else:
-            output = action_output.results[0].output
-        return output
-
-    async def get_action_status(self, uuid_or_prefix=None, name=None):
-        """Get the status of all actions, filtered by ID, ID prefix, or name.
-
-        :param str uuid_or_prefix: Filter by action uuid or prefix
-        :param str name: Filter by action name
-
-        """
-        results = {}
-        action_results = []
-        action_facade = client.ActionFacade.from_connection(
-            self.connection()
-        )
-        if name:
-            name_results = await action_facade.FindActionsByNames([name])
-            action_results.extend(name_results.actions[0].actions)
-        if uuid_or_prefix:
-            # Collect list of actions matching uuid or prefix
-            matching_actions = await action_facade.FindActionTagsByPrefix(
-                [uuid_or_prefix])
-            entities = []
-            for actions in matching_actions.matches.values():
-                entities = [{'tag': a.tag} for a in actions]
-            # Get action results matching action tags
-            uuid_results = await action_facade.Actions(entities)
-            action_results.extend(uuid_results.results)
-        for a in action_results:
-            results[tag.untag('action-', a.action.tag)] = a.status
-        return results
-
-    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:
-    """
-    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.bundle_facade = client.BundleFacade.from_connection(
-            model.connection())
-        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')
-        apps_dict = bundle.get('applications', bundle.get('services', {}))
-        for app_name in self.applications:
-            app_dict = apps_dict[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):
-                apps_dict[app_name]['charm'] = charm_url
-
-        return bundle
-
-    async def fetch_plan(self, entity_id):
-        is_store_url = entity_id.startswith('cs:')
-
-        if not is_store_url and os.path.isfile(entity_id):
-            bundle_yaml = Path(entity_id).read_text()
-        elif not is_store_url and os.path.isdir(entity_id):
-            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.bundle_facade.GetChanges(
-            yaml.dump(self.bundle))
-
-        if self.plan.errors:
-            raise JujuError(self.plan.errors)
-
-    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):
-        apps_dict = self.bundle.get('applications',
-                                    self.bundle.get('services', {}))
-        return list(apps_dict.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:
-            if params['parent_id'].startswith('$addUnit'):
-                unit = self.resolve(params['parent_id'])[0]
-                params['parent_id'] = unit.machine.entity_id
-            else:
-                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, *args):
-        """
-        :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 devices map[string]string:
-            Devices holds the optional devices constraints.
-            (Only given on Juju 2.5+)
-
-        :param resources map[string]int:
-            Resources identifies the revision to use for each resource
-            of the application's charm.
-
-        :param num_units int:
-            NumUnits holds the number of units required.  For IAAS models, this
-            will be 0 and separate AddUnitChanges will be used.  For Kubernetes
-            models, this will be used to scale the application.
-            (Only given on Juju 2.5+)
-        """
-        # resolve indirect references
-        charm = self.resolve(charm)
-
-        if len(args) == 1:
-            # Juju 2.4 and below only sends the resources
-            resources = args[0]
-            devices, num_units = None, None
-        else:
-            # Juju 2.5+ sends devices before resources, as well as num_units
-            # There might be placement but we need to ignore that.
-            devices, resources, num_units = args[:3]
-
-        if not charm.startswith('local:'):
-            resources = await self.model._add_store_resources(
-                application, charm, overrides=resources)
-        await self.model._deploy(
-            charm_url=charm,
-            application=application,
-            series=series,
-            config=options,
-            constraints=constraints,
-            endpoint_bindings=endpoint_bindings,
-            resources=resources,
-            storage=storage,
-            devices=devices,
-            num_units=num_units,
-        )
-        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 scale(self, application, scale):
-        """
-        Handle a change of scale to a k8s application.
-
-        :param string application:
-            Application holds the application placeholder name for which a unit
-            is added.
-
-        :param int scale:
-            New scale value to use.
-        """
-        application = self.resolve(application)
-        return await self.model.applications[application].scale(scale=scale)
-
-    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:
-    """
-    Async wrapper around theblues.charmstore.CharmStore
-    """
-    def __init__(self, loop, cs_timeout=20):
-        self.loop = loop
-        self._cs = theblues.charmstore.CharmStore(timeout=cs_timeout)
-
-    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:
-    """
-    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 --git a/modules/libjuju/juju/placement.py b/modules/libjuju/juju/placement.py
deleted file mode 100644
index d0d42f7..0000000
--- a/modules/libjuju/juju/placement.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 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 --git a/modules/libjuju/juju/provisioner.py b/modules/libjuju/juju/provisioner.py
deleted file mode 100644
index d937cad..0000000
--- a/modules/libjuju/juju/provisioner.py
+++ /dev/null
@@ -1,369 +0,0 @@
-# Copyright 2019 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.
-import os
-import re
-import shlex
-import tempfile
-import uuid
-from subprocess import CalledProcessError
-
-import paramiko
-
-from .client import client
-
-arches = [
-    [re.compile(r"amd64|x86_64"), "amd64"],
-    [re.compile(r"i?[3-9]86"), "i386"],
-    [re.compile(r"(arm$)|(armv.*)"), "armhf"],
-    [re.compile(r"aarch64"), "arm64"],
-    [re.compile(r"ppc64|ppc64el|ppc64le"), "ppc64el"],
-    [re.compile(r"s390x?"), "s390x"],
-
-]
-
-
-def normalize_arch(rawArch):
-    """Normalize the architecture string."""
-    for arch in arches:
-        if arch[0].match(rawArch):
-            return arch[1]
-
-
-DETECTION_SCRIPT = """#!/bin/bash
-set -e
-os_id=$(grep '^ID=' /etc/os-release | tr -d '"' | cut -d= -f2)
-if [ "$os_id" = 'centos' ]; then
-  os_version=$(grep '^VERSION_ID=' /etc/os-release | tr -d '"' | cut -d= -f2)
-  echo "centos$os_version"
-else
-  lsb_release -cs
-fi
-uname -m
-grep MemTotal /proc/meminfo
-cat /proc/cpuinfo
-"""
-
-INITIALIZE_UBUNTU_SCRIPT = """set -e
-(id ubuntu &> /dev/null) || useradd -m ubuntu -s /bin/bash
-umask 0077
-temp=$(mktemp)
-echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > $temp
-install -m 0440 $temp /etc/sudoers.d/90-juju-ubuntu
-rm $temp
-su ubuntu -c 'install -D -m 0600 /dev/null ~/.ssh/authorized_keys'
-export authorized_keys="{}"
-if [ ! -z "$authorized_keys" ]; then
-    su ubuntu -c 'echo $authorized_keys >> ~/.ssh/authorized_keys'
-fi
-"""
-
-
-class SSHProvisioner:
-    """Provision a manually created machine via SSH."""
-    user = ""
-    host = ""
-    private_key_path = ""
-
-    def __init__(self, user, host, private_key_path):
-        self.host = host
-        self.user = user
-        self.private_key_path = private_key_path
-
-    def _get_ssh_client(self, host, user, key):
-        """Return a connected Paramiko ssh object.
-
-        :param str host: The host to connect to.
-        :param str user: The user to connect as.
-        :param str key: The private key to authenticate with.
-
-        :return: object: A paramiko.SSHClient
-        :raises: :class:`paramiko.ssh_exception.SSHException` if the
-            connection failed
-        """
-
-        ssh = paramiko.SSHClient()
-        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
-        pkey = None
-
-        # Read the private key into a paramiko.RSAKey
-        if os.path.exists(key):
-            with open(key, 'r') as f:
-                pkey = paramiko.RSAKey.from_private_key(f)
-
-        #######################################################################
-        # There is a bug in some versions of OpenSSH 4.3 (CentOS/RHEL5) where #
-        # the server may not send the SSH_MSG_USERAUTH_BANNER message except  #
-        # when responding to an auth_none request. For example, paramiko will #
-        # attempt to use password authentication when a password is set, but  #
-        # the server could deny that, instead requesting keyboard-interactive.#
-        # The hack to workaround this is to attempt a reconnect, which will   #
-        # receive the right banner, and authentication can proceed. See the   #
-        # following for more info:                                            #
-        # https://github.com/paramiko/paramiko/issues/432                     #
-        # https://github.com/paramiko/paramiko/pull/438                       #
-        #######################################################################
-
-        try:
-            ssh.connect(host, port=22, username=user, pkey=pkey)
-        except paramiko.ssh_exception.SSHException as e:
-            if 'Error reading SSH protocol banner' == str(e):
-                # Once more, with feeling
-                ssh.connect(host, port=22, username=user, pkey=pkey)
-            else:
-                # Reraise the original exception
-                raise e
-
-        return ssh
-
-    def _run_command(self, ssh, cmd, pty=True):
-        """Run a command remotely via SSH.
-
-        :param object ssh: The SSHClient
-        :param str cmd: The command to execute
-        :param list cmd: The `shlex.split` command to execute
-        :param bool pty: Whether to allocate a pty
-
-        :return: tuple: The stdout and stderr of the command execution
-        :raises: :class:`CalledProcessError` if the command fails
-        """
-
-        if isinstance(cmd, str):
-            cmd = shlex.split(cmd)
-
-        if type(cmd) is not list:
-            cmd = [cmd]
-
-        cmds = ' '.join(cmd)
-        stdin, stdout, stderr = ssh.exec_command(cmds, get_pty=pty)
-        retcode = stdout.channel.recv_exit_status()
-
-        if retcode > 0:
-            output = stderr.read().strip()
-            raise CalledProcessError(returncode=retcode, cmd=cmd,
-                                     output=output)
-        return (
-            stdout.read().decode('utf-8').strip(),
-            stderr.read().decode('utf-8').strip()
-        )
-
-    def _init_ubuntu_user(self):
-        """Initialize the ubuntu user.
-
-        :return: bool: If the initialization was successful
-        :raises: :class:`paramiko.ssh_exception.AuthenticationException`
-            if the authentication fails
-        """
-
-        ssh = None
-        try:
-            # Run w/o allocating a pty, so we fail if sudo prompts for a passwd
-            ssh = self._get_ssh_client(
-                self.host,
-                self.user,
-                self.private_key_path,
-            )
-            stdout, stderr = self._run_command(ssh, "sudo -n true", pty=False)
-        except paramiko.ssh_exception.AuthenticationException as e:
-            raise e
-        finally:
-            if ssh:
-                ssh.close()
-
-        # Infer the public key
-        public_key = None
-        public_key_path = "{}.pub".format(self.private_key_path)
-
-        if not os.path.exists(public_key_path):
-            raise FileNotFoundError(
-                "Public key '{}' doesn't exist.".format(public_key_path)
-            )
-
-        with open(public_key_path, "r") as f:
-            public_key = f.readline()
-
-        script = INITIALIZE_UBUNTU_SCRIPT.format(public_key)
-
-        try:
-            ssh = self._get_ssh_client(
-                self.host,
-                self.user,
-                self.private_key_path,
-            )
-
-            self._run_command(
-                ssh,
-                ["sudo", "/bin/bash -c " + shlex.quote(script)],
-                pty=True
-            )
-        except paramiko.ssh_exception.AuthenticationException as e:
-            raise e
-        finally:
-            ssh.close()
-
-        return True
-
-    def _detect_hardware_and_os(self, ssh):
-        """Detect the target hardware capabilities and OS series.
-
-        :param object ssh: The SSHClient
-        :return: str: A raw string containing OS and hardware information.
-        """
-
-        info = {
-            'series': '',
-            'arch': '',
-            'cpu-cores': '',
-            'mem': '',
-        }
-
-        stdout, stderr = self._run_command(
-            ssh,
-            ["sudo", "/bin/bash -c " + shlex.quote(DETECTION_SCRIPT)],
-            pty=True,
-        )
-
-        lines = stdout.split("\n")
-        info['series'] = lines[0].strip()
-        info['arch'] = normalize_arch(lines[1].strip())
-
-        memKb = re.split(r'\s+', lines[2])[1]
-
-        # Convert megabytes -> kilobytes
-        info['mem'] = round(int(memKb) / 1024)
-
-        # Detect available CPUs
-        recorded = {}
-        for line in lines[3:]:
-            physical_id = ""
-            print(line)
-
-            if line.find("physical id") == 0:
-                physical_id = line.split(":")[1].strip()
-            elif line.find("cpu cores") == 0:
-                cores = line.split(":")[1].strip()
-
-                if physical_id not in recorded.keys():
-                    info['cpu-cores'] += cores
-                    recorded[physical_id] = True
-
-        return info
-
-    def provision_machine(self):
-        """Perform the initial provisioning of the target machine.
-
-        :return: bool: The client.AddMachineParams
-        :raises: :class:`paramiko.ssh_exception.AuthenticationException`
-            if the upload fails
-        """
-        params = client.AddMachineParams()
-
-        if self._init_ubuntu_user():
-            try:
-
-                ssh = self._get_ssh_client(
-                    self.host,
-                    self.user,
-                    self.private_key_path
-                )
-
-                hw = self._detect_hardware_and_os(ssh)
-                params.series = hw['series']
-                params.instance_id = "manual:{}".format(self.host)
-                params.nonce = "manual:{}:{}".format(
-                    self.host,
-                    str(uuid.uuid4()),  # a nop for Juju w/manual machines
-                )
-                params.hardware_characteristics = {
-                    'arch': hw['arch'],
-                    'mem': int(hw['mem']),
-                    'cpu-cores': int(hw['cpu-cores']),
-                }
-                params.addresses = [{
-                    'value': self.host,
-                    'type': 'ipv4',
-                    'scope': 'public',
-                }]
-
-            except paramiko.ssh_exception.AuthenticationException as e:
-                raise e
-            finally:
-                ssh.close()
-
-        return params
-
-    async def install_agent(self, connection, nonce, machine_id):
-        """
-        :param object connection: Connection to Juju API
-        :param str nonce: The nonce machine specification
-        :param str machine_id: The id assigned to the machine
-
-        :return: bool: If the initialization was successful
-        """
-
-        # The path where the Juju agent should be installed.
-        data_dir = "/var/lib/juju"
-
-        # Disabling this prevents `apt-get update` from running initially, so
-        # charms will fail to deploy
-        disable_package_commands = False
-
-        client_facade = client.ClientFacade.from_connection(connection)
-        results = await client_facade.ProvisioningScript(
-            data_dir=data_dir,
-            disable_package_commands=disable_package_commands,
-            machine_id=machine_id,
-            nonce=nonce,
-        )
-
-        self._run_configure_script(results.script)
-
-    def _run_configure_script(self, script):
-        """Run the script to install the Juju agent on the target machine.
-
-        :param str script: The script returned by the ProvisioningScript API
-        :raises: :class:`paramiko.ssh_exception.AuthenticationException`
-            if the upload fails
-        """
-
-        _, tmpFile = tempfile.mkstemp()
-        with open(tmpFile, 'w') as f:
-            f.write(script)
-
-        try:
-            # get ssh client
-            ssh = self._get_ssh_client(
-                self.host,
-                "ubuntu",
-                self.private_key_path,
-            )
-
-            # copy the local copy of the script to the remote machine
-            sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
-            sftp.put(
-                tmpFile,
-                tmpFile,
-            )
-
-            # run the provisioning script
-            stdout, stderr = self._run_command(
-                ssh,
-                "sudo /bin/bash {}".format(tmpFile),
-            )
-
-        except paramiko.ssh_exception.AuthenticationException as e:
-            raise e
-        finally:
-            os.remove(tmpFile)
-            ssh.close()
diff --git a/modules/libjuju/juju/relation.py b/modules/libjuju/juju/relation.py
deleted file mode 100644
index d2f2053..0000000
--- a/modules/libjuju/juju/relation.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import logging
-
-from . import model
-
-log = logging.getLogger(__name__)
-
-
-class Endpoint:
-    def __init__(self, model, data):
-        self.model = model
-        self.data = data
-
-    def __repr__(self):
-        return '<Endpoint {}:{}>'.format(self.application.name, self.name)
-
-    @property
-    def application(self):
-        return self.model.applications[self.data['application-name']]
-
-    @property
-    def name(self):
-        return self.data['relation']['name']
-
-    @property
-    def interface(self):
-        return self.data['relation']['interface']
-
-    @property
-    def role(self):
-        return self.data['relation']['role']
-
-    @property
-    def scope(self):
-        return self.data['relation']['scope']
-
-
-class Relation(model.ModelEntity):
-    def __repr__(self):
-        return '<Relation id={} {}>'.format(self.entity_id, self.key)
-
-    @property
-    def endpoints(self):
-        return [Endpoint(self.model, data)
-                for data in self.safe_data['endpoints']]
-
-    @property
-    def provides(self):
-        """
-        The endpoint on the provides side of this relation, or None.
-        """
-        for endpoint in self.endpoints:
-            if endpoint.role == 'provider':
-                return endpoint
-        return None
-
-    @property
-    def requires(self):
-        """
-        The endpoint on the requires side of this relation, or None.
-        """
-        for endpoint in self.endpoints:
-            if endpoint.role == 'requirer':
-                return endpoint
-        return None
-
-    @property
-    def peers(self):
-        """
-        The peers endpoint of this relation, or None.
-        """
-        for endpoint in self.endpoints:
-            if endpoint.role == 'peer':
-                return endpoint
-        return None
-
-    @property
-    def is_subordinate(self):
-        return any(ep.scope == 'container' for ep in self.endpoints)
-
-    @property
-    def is_peer(self):
-        return any(ep.role == 'peer' for ep in self.endpoints)
-
-    def matches(self, *specs):
-        """
-        Check if this relation matches relationship specs.
-
-        Relation specs are strings that would be given to Juju to establish a
-        relation, and should be in the form ``<application>[:<endpoint_name>]``
-        where the ``:<endpoint_name>`` suffix is optional.  If the suffix is
-        omitted, this relation will match on any endpoint as long as the given
-        application is involved.
-
-        In other words, this relation will match a spec if that spec could have
-        created this relation.
-
-        :return: True if all specs match.
-        """
-        for spec in specs:
-            if ':' in spec:
-                app_name, endpoint_name = spec.split(':')
-            else:
-                app_name, endpoint_name = spec, None
-            for endpoint in self.endpoints:
-                if app_name == endpoint.application.name and \
-                   endpoint_name in (endpoint.name, None):
-                    # found a match for this spec, so move to next one
-                    break
-            else:
-                # no match for this spec
-                return False
-        return True
-
-    @property
-    def applications(self):
-        """
-        All applications involved in this relation.
-        """
-        return [ep.application for ep in self.endpoints]
-
-    async def destroy(self):
-        raise NotImplementedError()
-        # TODO: destroy a relation
diff --git a/modules/libjuju/juju/tag.py b/modules/libjuju/juju/tag.py
deleted file mode 100644
index 282e0a6..0000000
--- a/modules/libjuju/juju/tag.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# TODO: Tags should be a proper class, so that we can distinguish whether
-# something is already a tag or not.  For example, 'user-foo' is a valid
-# username, but is ambiguous with the already-tagged username 'foo'.
-
-
-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)
-
-
-def action(action_uuid):
-    return _prefix('action-', action_uuid)
diff --git a/modules/libjuju/juju/unit.py b/modules/libjuju/juju/unit.py
deleted file mode 100644
index e8ecd96..0000000
--- a/modules/libjuju/juju/unit.py
+++ /dev/null
@@ -1,281 +0,0 @@
-import logging
-
-import pyrfc3339
-
-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 pyrfc3339.parse(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 pyrfc3339.parse(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, in seconds, 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)
-
-        if timeout:
-            # Convert seconds to nanoseconds
-            timeout = int(timeout * 1000000000)
-
-        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 scp_opts: Additional options to the `scp` command
-        :type scp_opts: str or list
-        """
-        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 scp_opts: Additional options to the `scp` command
-        :type scp_opts: str or list
-        """
-        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 --git a/modules/libjuju/juju/user.py b/modules/libjuju/juju/user.py
deleted file mode 100644
index 389d210..0000000
--- a/modules/libjuju/juju/user.py
+++ /dev/null
@@ -1,86 +0,0 @@
-import logging
-
-import pyrfc3339
-
-from . import tag
-
-log = logging.getLogger(__name__)
-
-
-class User(object):
-    def __init__(self, controller, user_info, secret_key=None):
-        self.controller = controller
-        self._user_info = user_info
-        self._secret_key = secret_key
-
-    @property
-    def tag(self):
-        return tag.user(self.username)
-
-    @property
-    def username(self):
-        return self._user_info.username
-
-    @property
-    def display_name(self):
-        return self._user_info.display_name
-
-    @property
-    def last_connection(self):
-        return pyrfc3339.parse(self._user_info.last_connection)
-
-    @property
-    def access(self):
-        return self._user_info.access
-
-    @property
-    def date_created(self):
-        return self._user_info.date_created
-
-    @property
-    def enabled(self):
-        return not self._user_info.disabled
-
-    @property
-    def disabled(self):
-        return self._user_info.disabled
-
-    @property
-    def created_by(self):
-        return self._user_info.created_by
-
-    @property
-    def secret_key(self):
-        return self._secret_key
-
-    async def set_password(self, password):
-        """Update this user's password.
-        """
-        await self.controller.change_user_password(self.username, password)
-        self._user_info.password = password
-
-    async def grant(self, acl='login'):
-        """Set access level of this user on the controller.
-
-        :param str acl: Access control ('login', 'add-model', or 'superuser')
-        """
-        if await self.controller.grant(self.username, acl):
-            self._user_info.access = acl
-
-    async def revoke(self):
-        """Removes all access rights for this user from the controller.
-        """
-        await self.controller.revoke(self.username)
-        self._user_info.access = ''
-
-    async def disable(self):
-        """Disable this user.
-        """
-        await self.controller.disable_user(self.username)
-        self._user_info.disabled = True
-
-    async def enable(self):
-        """Re-enable this user.
-        """
-        await self.controller.enable_user(self.username)
-        self._user_info.disabled = False
diff --git a/modules/libjuju/juju/utils.py b/modules/libjuju/juju/utils.py
deleted file mode 100644
index 1038ed1..0000000
--- a/modules/libjuju/juju/utils.py
+++ /dev/null
@@ -1,165 +0,0 @@
-import asyncio
-import os
-from collections import defaultdict
-from functools import partial
-from pathlib import Path
-import base64
-from pyasn1.type import univ, char
-from pyasn1.codec.der.encoder import encode
-
-
-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.
-
-    '''
-    loop = loop or asyncio.get_event_loop()
-    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 block_until(*conditions, timeout=None, wait_period=0.5, loop=None):
-    """Return only after all conditions are true.
-
-    """
-    async def _block():
-        while not all(c() for c in conditions):
-            await asyncio.sleep(wait_period, loop=loop)
-    await asyncio.wait_for(_block(), timeout, loop=loop)
-
-
-async def run_with_interrupt(task, *events, loop=None):
-    """
-    Awaits a task while allowing it to be interrupted by one or more
-    `asyncio.Event`s.
-
-    If the task finishes without the events becoming set, the results of the
-    task will be returned.  If the event become set, the task will be cancelled
-    ``None`` will be returned.
-
-    :param task: Task to run
-    :param events: One or more `asyncio.Event`s 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()
-    task = asyncio.ensure_future(task, loop=loop)
-    event_tasks = [loop.create_task(event.wait()) for event in events]
-    done, pending = await asyncio.wait([task] + event_tasks,
-                                       loop=loop,
-                                       return_when=asyncio.FIRST_COMPLETED)
-    for f in pending:
-        f.cancel()  # cancel unfinished tasks
-    for f in done:
-        f.exception()  # prevent "exception was not retrieved" errors
-    if task in done:
-        return task.result()  # may raise exception
-    else:
-        return None
-
-
-class Addrs(univ.SequenceOf):
-    componentType = char.PrintableString()
-
-
-class RegistrationInfo(univ.Sequence):
-    """
-    ASN.1 representation of:
-
-    type RegistrationInfo struct {
-    User string
-
-        Addrs []string
-
-        SecretKey []byte
-
-        ControllerName string
-    }
-    """
-    pass
-
-
-def generate_user_controller_access_token(username, controller_endpoints, secret_key, controller_name):
-    """" Implement in python what is currently done in GO
-    https://github.com/juju/juju/blob/a5ab92ec9b7f5da3678d9ac603fe52d45af24412/cmd/juju/user/utils.go#L16
-
-    :param username: name of the user to register
-    :param controller_endpoints: juju controller endpoints list in the format <ip>:<port>
-    :param secret_key: base64 encoded string of the secret-key generated by juju
-    :param controller_name: name of the controller to register to.
-    """
-
-    # Secret key is returned as base64 encoded string in:
-    # https://websockets.readthedocs.io/en/stable/_modules/websockets/protocol.html#WebSocketCommonProtocol.recv
-    # Deconding it before marshalling into the ASN.1 message
-    secret_key = base64.b64decode(secret_key)
-    addr = Addrs()
-    for endpoint in controller_endpoints:
-        addr.append(endpoint)
-
-    registration_string = RegistrationInfo()
-    registration_string.setComponentByPosition(0, char.PrintableString(username))
-    registration_string.setComponentByPosition(1, addr)
-    registration_string.setComponentByPosition(2, univ.OctetString(secret_key))
-    registration_string.setComponentByPosition(3, char.PrintableString(controller_name))
-    registration_string = encode(registration_string)
-    remainder = len(registration_string) % 3
-    registration_string += b"\0" * (3 - remainder)
-    return base64.urlsafe_b64encode(registration_string)
diff --git a/modules/libjuju/scripts/gendoc b/modules/libjuju/scripts/gendoc
deleted file mode 100755
index 3ef628e..0000000
--- a/modules/libjuju/scripts/gendoc
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/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 <<EOD > 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 --git a/modules/libjuju/setup.py b/modules/libjuju/setup.py
deleted file mode 100644
index 7134677..0000000
--- a/modules/libjuju/setup.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# 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=[
-        'macaroonbakery>=1.1,<2.0',
-        'pyRFC3339>=1.0,<2.0',
-        'pyyaml>=3.0,<=4.2',
-        'theblues>=0.3.8,<1.0',
-        'websockets>=7.0,<8.0',
-        'paramiko>=2.4.0,<3.0.0',
-        'pyasn1>=0.4.4',
-    ],
-    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",
-        "Programming Language :: Python :: 3.6",
-        "Programming Language :: Python :: 3.7",
-    ],
-    entry_points={
-        'console_scripts': [
-        ],
-    },
-)
diff --git a/modules/libjuju/tests/__init__.py b/modules/libjuju/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/tests/__init__.py
+++ /dev/null
diff --git a/modules/libjuju/tests/base.py b/modules/libjuju/tests/base.py
deleted file mode 100644
index 600372c..0000000
--- a/modules/libjuju/tests/base.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import inspect
-import subprocess
-import uuid
-from contextlib import contextmanager
-from pathlib import Path
-
-import mock
-from juju.client.jujudata import FileJujuData
-from juju.controller import Controller
-
-import pytest
-
-
-def is_bootstrapped():
-    try:
-        result = subprocess.run(['juju', 'switch'], stdout=subprocess.PIPE)
-        return (
-            result.returncode == 0 and
-            len(result.stdout.decode().strip()) > 0)
-    except FileNotFoundError:
-        return False
-
-
-bootstrapped = pytest.mark.skipif(
-    not is_bootstrapped(),
-    reason='bootstrapped Juju environment required')
-
-test_run_nonce = uuid.uuid4().hex[-4:]
-
-
-class CleanController():
-    """
-    Context manager that automatically connects and disconnects from
-    the currently active controller.
-
-    Note: Unlike CleanModel, this will not create a new controller for you,
-    and an active controller must already be available.
-    """
-    def __init__(self):
-        self._controller = None
-
-    async def __aenter__(self):
-        self._controller = Controller()
-        await self._controller.connect()
-        return self._controller
-
-    async def __aexit__(self, exc_type, exc, tb):
-        await self._controller.disconnect()
-
-
-class CleanModel():
-    """
-    Context manager that automatically connects to the currently active
-    controller, adds a fresh model, returns the connection to that model,
-    and automatically disconnects and cleans up the model.
-
-    The new model is also set as the current default for the controller
-    connection.
-    """
-    def __init__(self, bakery_client=None):
-        self._controller = None
-        self._model = None
-        self._model_uuid = None
-        self._bakery_client = bakery_client
-
-    async def __aenter__(self):
-        model_nonce = uuid.uuid4().hex[-4:]
-        frame = inspect.stack()[1]
-        test_name = frame.function.replace('_', '-')
-        jujudata = TestJujuData()
-        self._controller = Controller(
-            jujudata=jujudata,
-            bakery_client=self._bakery_client,
-        )
-        controller_name = jujudata.current_controller()
-        user_name = jujudata.accounts()[controller_name]['user']
-        await self._controller.connect(controller_name)
-
-        model_name = 'test-{}-{}-{}'.format(
-            test_run_nonce,
-            test_name,
-            model_nonce,
-        )
-        self._model = await self._controller.add_model(model_name)
-
-        # Change the JujuData instance so that it will return the new
-        # model as the current model name, so that we'll connect
-        # to it by default.
-        jujudata.set_model(
-            controller_name,
-            user_name + "/" + model_name,
-            self._model.info.uuid,
-        )
-
-        # save the model UUID in case test closes model
-        self._model_uuid = self._model.info.uuid
-
-        return self._model
-
-    async def __aexit__(self, exc_type, exc, tb):
-        await self._model.disconnect()
-        await self._controller.destroy_model(self._model_uuid)
-        await self._controller.disconnect()
-
-
-class TestJujuData(FileJujuData):
-    def __init__(self):
-        self.__controller_name = None
-        self.__model_name = None
-        self.__model_uuid = None
-        super().__init__()
-
-    def set_model(self, controller_name, model_name, model_uuid):
-        self.__controller_name = controller_name
-        self.__model_name = model_name
-        self.__model_uuid = model_uuid
-
-    def current_model(self, *args, **kwargs):
-        return self.__model_name or super().current_model(*args, **kwargs)
-
-    def models(self):
-        all_models = super().models()
-        if self.__model_name is None:
-            return all_models
-        all_models.setdefault(self.__controller_name, {})
-        all_models[self.__controller_name].setdefault('models', {})
-        cmodels = all_models[self.__controller_name]['models']
-        cmodels[self.__model_name] = {'uuid': self.__model_uuid}
-        return all_models
-
-
-class AsyncMock(mock.MagicMock):
-    async def __call__(self, *args, **kwargs):
-        return super().__call__(*args, **kwargs)
-
-
-@contextmanager
-def patch_file(filename):
-    """
-    "Patch" a file so that its current contents are automatically restored
-    when the context is exited.
-    """
-    filepath = Path(filename).expanduser()
-    data = filepath.read_bytes()
-    try:
-        yield
-    finally:
-        filepath.write_bytes(data)
diff --git a/modules/libjuju/tests/bundle/bundle.yaml b/modules/libjuju/tests/bundle/bundle.yaml
deleted file mode 100644
index 19a45ec..0000000
--- a/modules/libjuju/tests/bundle/bundle.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-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 --git a/modules/libjuju/tests/bundle/invalid.yaml b/modules/libjuju/tests/bundle/invalid.yaml
deleted file mode 100644
index 2e51c1e..0000000
--- a/modules/libjuju/tests/bundle/invalid.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-applications:
-  myapp:
-    charm: cs:xenial/ubuntu-0
-    num_units: 1
-    to:
-      - 0
-      - 0
diff --git a/modules/libjuju/tests/bundle/mini-bundle.yaml b/modules/libjuju/tests/bundle/mini-bundle.yaml
deleted file mode 100644
index 84d9a61..0000000
--- a/modules/libjuju/tests/bundle/mini-bundle.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-series: xenial
-applications:
-  dummy-sink:
-    charm: cs:~juju-qa/dummy-sink
-    num_units: 1
-  dummy-subordinate:
-    charm: cs:~juju-qa/dummy-subordinate
-relations:
-  - ['dummy-sink', 'dummy-subordinate']
diff --git a/modules/libjuju/tests/charm/metadata.yaml b/modules/libjuju/tests/charm/metadata.yaml
deleted file mode 100644
index 74eab3d..0000000
--- a/modules/libjuju/tests/charm/metadata.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-name: charm
-series: ["xenial"]
-summary: "test"
-description: "test"
-maintainers: ["test"]
diff --git a/modules/libjuju/tests/integration/__init__.py b/modules/libjuju/tests/integration/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/tests/integration/__init__.py
+++ /dev/null
diff --git a/modules/libjuju/tests/integration/bundle/bundle-resource-rev.yaml b/modules/libjuju/tests/integration/bundle/bundle-resource-rev.yaml
deleted file mode 100644
index c8feb83..0000000
--- a/modules/libjuju/tests/integration/bundle/bundle-resource-rev.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-series: xenial
-services:
-  ghost:
-    charm: "cs:ghost-19"
-    num_units: 1
-    resources:
-      ghost-stable: 11
diff --git a/modules/libjuju/tests/integration/bundle/bundle.yaml b/modules/libjuju/tests/integration/bundle/bundle.yaml
deleted file mode 100644
index d0245c5..0000000
--- a/modules/libjuju/tests/integration/bundle/bundle.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-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 --git a/modules/libjuju/tests/integration/cert.pem b/modules/libjuju/tests/integration/cert.pem
deleted file mode 100644
index 684029e..0000000
--- a/modules/libjuju/tests/integration/cert.pem
+++ /dev/null
@@ -1,33 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFxDCCA6ygAwIBAgIJAPBHQW1VVLhYMA0GCSqGSIb3DQEBCwUAMHcxCzAJBgNV
-BAYTAlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UEBwwHUmFsZWln
-aDESMBAGA1UECgwJQ2Fub25pY2FsMSkwJwYDVQQDDCBweXRob24tbGlianVqdS5p
-bnRlZ3JhdGlvbi50ZXN0czAeFw0xODEyMTEyMDQyMThaFw0xOTEyMTEyMDQyMTha
-MHcxCzAJBgNVBAYTAlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE
-BwwHUmFsZWlnaDESMBAGA1UECgwJQ2Fub25pY2FsMSkwJwYDVQQDDCBweXRob24t
-bGlianVqdS5pbnRlZ3JhdGlvbi50ZXN0czCCAiIwDQYJKoZIhvcNAQEBBQADggIP
-ADCCAgoCggIBANkkfNI4Q3eIIrXZF3xxnD9Bbp06jPeoEokUSrC98L5XwCtxs9Ma
-fWPqiSukPq3A0pPcRobFOu5o+pu6+1pFjcmtKICsp+CwHV52+IfozvNlhRMUFPb2
-IxU86tgpMcBAM5wLz85DoNSu4EjOku0rB8Z0GMfvvuc7aYtDQoKJSScHGWWFTaJT
-mtXmmKKSPtyPZ5PCQOv2Qmg5ujs4RS3R8dq4WRAd5F8YzRBgmtPYRrjwgEjD7GTq
-Xlt+COqn5+RgWFIH0pQ1xHkslBzBByzsyjLJPdV/ugNIZk6GNOzLAw3ynl/9xGGh
-RAOrBsKVQPs3liZoGXVqKxHyNgWh8V58TgiFDuRZiZwQDV6cRkxOkGQIXohkS7uC
-5OXrAsyyVPrRoWfQMggxM1jH3H+93PoRqEsLypLxw53h9Seep4tOggw/hgOolLFg
-diAT/IU3yhESXnXpAA8G2rDKO32hw+vWuaGCbH6bShb+9ZfkAmLUiSVm9ClbkZRQ
-IaXmtBwsLS2IBxW51jrjSuXvqlBZc01pIUC2CT7aTrbftpA+w6i1bZpqjCukUSAx
-t4dRjzL/h/drp5xxlqXOZL9yjYl8vFul4LFKkpkJGIKESEksxULZR/3b+WA7oyiA
-Ph9UgnKU730dKVSfWbi/0tsCA/4HKIJ9qucCrfxyL8hizJ+1w9NZJ3ZbAgMBAAGj
-UzBRMB0GA1UdDgQWBBSv/7Fraw7XviWwlnPGc+CTJA0rKjAfBgNVHSMEGDAWgBSv
-/7Fraw7XviWwlnPGc+CTJA0rKjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
-CwUAA4ICAQCluQ7qFgNoGPkAkdoDXN26OhQcfrCmjvPufurs8Fc4Yxumupz01Df+
-zu3J2pG+tfThi37sRZsxN/jhtZOVgaXPSgpgB8Tz16YCK3KTEHXil/i6wp4JGmnQ
-VsOo8cGLEvcmFg98/l2Tu31IXaSm7Fc/VxVB0fhzvIa0xG+osU3Dy4GWhDQrkkJ8
-MErTvEAb8QnY1y20ThPAZ5StBZ/ZLwPksuzkvJwGN8FI00k1RCznDNArzKouuZZt
-JdfjnFtT+nrP0XSAlphfI0o7Gbm6jqVLPIekp8iPJuAmk55biZ9rAJBu8DsHtBpQ
-cbpH+84y/xaC9svPgD9Un6dDDYXQ4QZL393oZW1RM4apR9gOz/8NxW2bJyPVxA3M
-nmHphZjyGrOLN/QjrZV93Dv65SIivzT2zYEztvK4rjui31J3VDeNEe7uMFGq5Pmq
-7HRrcPY2sMSOHkzOTFmd5qwaPD9EzkM5UT5YJDEE7YUjkR8LlxP5Xvo82HXxKl8D
-8Tk09HuBMWg69QjuVThBNJSWpIxTbQEfm/2j+fm1L1kE9N7+97y69eDTNdOxJK5D
-zaKoAjgoneZZzZN6fblfbQuAsDdJ2xLR0DTBlxA9Gv7OYbUpXm3eAyfYL4AmqvHI
-HtfgPeSH2+wQVteiVa7q0BIto75XE3m8+xIOQsAUEb04fcacEpKZlw==
------END CERTIFICATE-----
diff --git a/modules/libjuju/tests/integration/charm/metadata.yaml b/modules/libjuju/tests/integration/charm/metadata.yaml
deleted file mode 100644
index 74eab3d..0000000
--- a/modules/libjuju/tests/integration/charm/metadata.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-name: charm
-series: ["xenial"]
-summary: "test"
-description: "test"
-maintainers: ["test"]
diff --git a/modules/libjuju/tests/integration/key.pem b/modules/libjuju/tests/integration/key.pem
deleted file mode 100644
index 664123e..0000000
--- a/modules/libjuju/tests/integration/key.pem
+++ /dev/null
@@ -1,52 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDZJHzSOEN3iCK1
-2Rd8cZw/QW6dOoz3qBKJFEqwvfC+V8ArcbPTGn1j6okrpD6twNKT3EaGxTruaPqb
-uvtaRY3JrSiArKfgsB1edviH6M7zZYUTFBT29iMVPOrYKTHAQDOcC8/OQ6DUruBI
-zpLtKwfGdBjH777nO2mLQ0KCiUknBxllhU2iU5rV5piikj7cj2eTwkDr9kJoObo7
-OEUt0fHauFkQHeRfGM0QYJrT2Ea48IBIw+xk6l5bfgjqp+fkYFhSB9KUNcR5LJQc
-wQcs7MoyyT3Vf7oDSGZOhjTsywMN8p5f/cRhoUQDqwbClUD7N5YmaBl1aisR8jYF
-ofFefE4IhQ7kWYmcEA1enEZMTpBkCF6IZEu7guTl6wLMslT60aFn0DIIMTNYx9x/
-vdz6EahLC8qS8cOd4fUnnqeLToIMP4YDqJSxYHYgE/yFN8oREl516QAPBtqwyjt9
-ocPr1rmhgmx+m0oW/vWX5AJi1IklZvQpW5GUUCGl5rQcLC0tiAcVudY640rl76pQ
-WXNNaSFAtgk+2k6237aQPsOotW2aaowrpFEgMbeHUY8y/4f3a6eccZalzmS/co2J
-fLxbpeCxSpKZCRiChEhJLMVC2Uf92/lgO6MogD4fVIJylO99HSlUn1m4v9LbAgP+
-ByiCfarnAq38ci/IYsyftcPTWSd2WwIDAQABAoICAFbe9Rz5K2ynxxMvbej4XsUj
-vUgjw3/U+s1ik9sPsj/ERXpb+9BJ+b4+d3BBPl4vFU/YQVLrlv8IerJQ5PwhdW8o
-2lpYOLV4X9eKCzX8WscfZ1TRpO2EXVbCz0V5fZDnXn5gb1uazL4p1ErscfV2UJ8B
-lWRvstU5fKkdWH92wxBdE7j80qlNf1Vx8sCfd4yvxoVjoquEEt81sR6+DVcedf7F
-38PF4bZ16pxRub9k+C5G8VurHmjlJqi9zH1sfSZtsQfoX0OyGw9LWVoDk4ZSmTYm
-Mpm2hsmHbn6dzJCrS2aKGPhYQve4F8jL5GF2as/WVji5Tu4dcmu0lg480p61ZlXf
-Q58qw4uXMU2KfiuLKyTV8MlmktMhDiHAmzAbIXskdmV2BNlIwyudsVXT1QD0BKH5
-I+8edW1OPLK72/kt9VT1paRbTiCL0NWk99QCL1VxPB4FupQQm1Hk2KnMrUfjFUOm
-9cuOP1S0HcHCMHN4+y0UCmn3phrWmfI/KlDZCxmSd8gvNwKkPSW5ONuYmZlpE5Wm
-s7FwRoAGGvSsjXOC3N6m48b0dQNLnMvSXQIRiDbnTzChNJ3q7y9u0o/dqATCtelx
-S7ouVKxHqSdy9G8WK0XQAFqny2dcoHZiiuxWboF9p1zEia43pdFVy/7g08KjSBQ1
-vzVGhUDYtquqq0MociWBAoIBAQD6C8ZDBU8VWwOIPL+zX8/4MNp0PfcJrOwk1vF0
-J0aPRRvqx0g6yhzjrCtWNrQnHV6Oc9FBg/NPAthAAQWYEwQr77RJWRtle/n7cH2A
-qFkAL0nYokti7TdFMe82a8hlnuo9GQl340t95j03/HDAtrqQ0xFi32Rpp54MgHLU
-FW2AYTv7CLV18p7yHIMdn0ESORPxlc/hYuuyL6ZPm/7DF/bbieY1+ZVAzn1ls17m
-dQctagpInRC2EDL17lQK86Mh7PGdVTIaJMFvzdyuIn8qswe1n3FA0OCL7VBfMjE8
-caUZ3kfGfeNKtkUvGALoXploZhDTmfDs5XQFIoMvwi87lClBAoIBAQDeUCQMyPUC
-TcfDKmeKAiGjm4Amtb+rvA3SbPSJvteOaohyqKFswUf9fNCrJim1QVpQ+PtArlAx
-WK9X8g44+OOWx2moLxlptzjzsYEXJYzUtIjuFE10xiGJEvthmWAZ+EB7Gexu7696
-M4LcWkAivCAwcM5e2Gr3DtMMS4E9fxNZfEn7RNFtTs6Cit/R2VITlbYnECSU13FY
-DI37g8umCR01pTZ/7VVUwVMeq/irFKwTfkHoF2Fyxbp8CT91ydRsYCBs395xcEH1
-2rblBXUlGj01eVZtTX2HVSS78o/ak+Q3WJQvh1Hds8yS7QdirkOpmGGzvwpIhjzB
-ztHsgjbFt3ybAoIBAA1HAsgcSA7CPnXFhAhqVgi/z1nM0Ila/U8XesrIKx8AdHML
-EfLNOKt+QO7bCMXq8VJvI/VupETVydXcOAfTOq16lQAwExxYcPXBC2kBh3hTCoDO
-XWJrZjvuYt1o68M5pQaJhc8v6ppM14NZjEMvcMiv7IRriFFz7RiM2YwZdy8R+rVh
-yQDyWS5SBURVaIcnML/rTJaTQiC8FwCzL9v8MceGkwrareo7DL2RwMBMBo2Ky/D/
-JhwE0C/u79eFCGyMwGeyVm689OiS7dzxR/9kckxaoxDmBoZnm5TyfVrQTgwJmZYY
-qTEWbKYLiFv+afb5NHuH+RsbNAXxxzWKAigPvgECggEAYD8H7HUQBchQxMDWBJy5
-nZBT4e5rpdkLjt9W20/BGMosep9hC6l+FlN0L7Sc9/jsNgQlGrKcy1Be0U9dMvMl
-7QA2UPbbJLaLNI3TmobKOshSQ+iMRBMHL8YFCRMS1QtyNxlZEAo6yUgFzopQG/mg
-YfhkkBFX9c/4NOl3cX1TjjlN+jeoB4/HviKLldllPE9jhfPqMno3euwsiAheIWru
-t2vodWf1unTcHHpNdRvFB8dwlx+QM9VA0DRcwgz4J1dSknA1aJ02IU9oQSyks8Rx
-XXZDoZybzPxio+/2saW3dvKlbRJDsh0GY1G1EdbqOkFbgyshM5bSNQHqRl91gRHY
-IwKCAQEApF790G7J1IgNrLBxLlzEkVcv2Az8QDHviC8MxdVerGj62E5fGUb44Z+p
-SM2vjjtL7yeTPuH0K7bbVtDMZoj3l81BHY6OnmFTLPSlMnUYXs7aVjbIK3EMQtHa
-EyNOiwNtIOAUMqQ3C/KXWxdO0J8/kY6b7cvZwj5zDLYt+4j8BN8w8EL0Kgxw9Bd/
-DL++Nz3IqoOoPF0aK7hVTklVzONIdaGL2OjlyESKZOWJR1pypLC9+nUAAFbtPN5Q
-8xyG3Rqoo7j697M50LP4ZMCE8WK/uZth4LPU9KWJAJ3FHrKki0qB1zbYXS4OMFbj
-hg+Fb1z8af0WL9PCAwsWQMTaSx88tQ==
------END PRIVATE KEY-----
diff --git a/modules/libjuju/tests/integration/test_application.py b/modules/libjuju/tests/integration/test_application.py
deleted file mode 100644
index b705832..0000000
--- a/modules/libjuju/tests/integration/test_application.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import asyncio
-
-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(
-            'percona-cluster',
-            application_name='mysql',
-            series='xenial',
-            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'
-
-        # Restore config back to default
-        await ubuntu_app.reset_config(['tuning-level'])
-        config = await ubuntu_app.get_config()
-        assert config['tuning-level']['value'] == 'safest'
-
-        # update and check app constraints
-        await ubuntu_app.set_constraints({'mem': 512 * MB})
-        constraints = await ubuntu_app.get_constraints()
-        assert constraints['mem'] == 512 * MB
-
-        # check action definitions
-        actions = await ubuntu_app.get_actions()
-        assert 'backup' in actions.keys()
-
-
-@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'
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_upgrade_charm_resource(event_loop):
-    async with base.CleanModel() as model:
-        app = await model.deploy('cs:~cynerva/upgrade-charm-resource-test-1')
-
-        def units_ready():
-            if not app.units:
-                return False
-            unit = app.units[0]
-            return unit.workload_status == 'active' and \
-                unit.agent_status == 'idle'
-
-        await asyncio.wait_for(model.block_until(units_ready), timeout=480)
-        unit = app.units[0]
-        expected_message = 'I have no resource.'
-        assert unit.workload_status_message == expected_message
-
-        await app.upgrade_charm(revision=2)
-        await asyncio.wait_for(
-            model.block_until(
-                lambda: unit.workload_status_message != 'I have no resource.'
-            ),
-            timeout=60
-        )
-        expected_message = 'My resource: I am the resource.'
-        assert app.units[0].workload_status_message == expected_message
diff --git a/modules/libjuju/tests/integration/test_client.py b/modules/libjuju/tests/integration/test_client.py
deleted file mode 100644
index 240c471..0000000
--- a/modules/libjuju/tests/integration/test_client.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from juju.client import client
-
-import pytest
-
-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 --git a/modules/libjuju/tests/integration/test_connection.py b/modules/libjuju/tests/integration/test_connection.py
deleted file mode 100644
index 6647a03..0000000
--- a/modules/libjuju/tests/integration/test_connection.py
+++ /dev/null
@@ -1,236 +0,0 @@
-import asyncio
-import http
-import logging
-import socket
-import ssl
-from contextlib import closing
-from pathlib import Path
-
-from juju.client import client
-from juju.client.connection import Connection
-from juju.controller import Controller
-from juju.utils import run_with_interrupt
-
-import pytest
-import websockets
-
-from .. import base
-
-
-logger = logging.getLogger(__name__)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_monitor(event_loop):
-    async with base.CleanModel() as model:
-        conn = model.connection()
-        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() as model:
-        conn = model.connection()
-
-        assert conn.monitor.status == 'connected'
-        try:
-            async with conn.monitor.reconnecting:
-                await conn.ws.close()
-                await asyncio.sleep(1)
-                assert conn.monitor.status == 'error'
-        finally:
-            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:
-        kwargs = model.connection().connect_params()
-        conn = await Connection.connect(**kwargs)
-        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()
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_redirect(event_loop):
-    controller = Controller()
-    await controller.connect()
-    kwargs = controller.connection().connect_params()
-    await controller.disconnect()
-
-    # websockets.server.logger.setLevel(logging.DEBUG)
-    # websockets.client.logger.setLevel(logging.DEBUG)
-    # # websockets.protocol.logger.setLevel(logging.DEBUG)
-    # logger.setLevel(logging.DEBUG)
-
-    destination = 'wss://{}/api'.format(kwargs['endpoint'])
-    redirect_statuses = [
-        http.HTTPStatus.MOVED_PERMANENTLY,
-        http.HTTPStatus.FOUND,
-        http.HTTPStatus.SEE_OTHER,
-        http.HTTPStatus.TEMPORARY_REDIRECT,
-        http.HTTPStatus.PERMANENT_REDIRECT,
-    ]
-    test_server_cert = Path(__file__).with_name('cert.pem')
-    kwargs['cacert'] += '\n' + test_server_cert.read_text()
-    server = RedirectServer(destination, event_loop)
-    try:
-        for status in redirect_statuses:
-            logger.debug('test: starting {}'.format(status))
-            server.start(status)
-            await run_with_interrupt(server.running.wait(),
-                                     server.terminated)
-            if server.exception:
-                raise server.exception
-            assert not server.terminated.is_set()
-            logger.debug('test: started')
-            kwargs_copy = dict(kwargs,
-                               endpoint='localhost:{}'.format(server.port))
-            logger.debug('test: connecting')
-            conn = await Connection.connect(**kwargs_copy)
-            logger.debug('test: connected')
-            await conn.close()
-            logger.debug('test: stopping')
-            server.stop()
-            await server.stopped.wait()
-            logger.debug('test: stopped')
-    finally:
-        server.terminate()
-        await server.terminated.wait()
-
-
-class RedirectServer:
-    def __init__(self, destination, loop):
-        self.destination = destination
-        self.loop = loop
-        self._start = asyncio.Event()
-        self._stop = asyncio.Event()
-        self._terminate = asyncio.Event()
-        self.running = asyncio.Event()
-        self.stopped = asyncio.Event()
-        self.terminated = asyncio.Event()
-        if hasattr(ssl, 'PROTOCOL_TLS_SERVER'):
-            # python 3.6+
-            protocol = ssl.PROTOCOL_TLS_SERVER
-        elif hasattr(ssl, 'PROTOCOL_TLS'):
-            # python 3.5.3+
-            protocol = ssl.PROTOCOL_TLS
-        else:
-            # python 3.5.2
-            protocol = ssl.PROTOCOL_TLSv1_2
-        self.ssl_context = ssl.SSLContext(protocol)
-        crt_file = Path(__file__).with_name('cert.pem')
-        key_file = Path(__file__).with_name('key.pem')
-        self.ssl_context.load_cert_chain(str(crt_file), str(key_file))
-        self.status = None
-        self.port = None
-        self._task = self.loop.create_task(self.run())
-
-    def start(self, status):
-        self.status = status
-        self.port = self._find_free_port()
-        self._start.set()
-
-    def stop(self):
-        self._stop.set()
-
-    def terminate(self):
-        self._terminate.set()
-        self.stop()
-
-    @property
-    def exception(self):
-        try:
-            return self._task.exception()
-        except (asyncio.CancelledError, asyncio.InvalidStateError):
-            return None
-
-    async def run(self):
-        logger.debug('server: active')
-
-        async def hello(websocket, path):
-            await websocket.send('hello')
-
-        async def redirect(path, request_headers):
-            return self.status, {'Location': self.destination}, b""
-
-        try:
-            while not self._terminate.is_set():
-                await run_with_interrupt(self._start.wait(),
-                                         self._terminate,
-                                         loop=self.loop)
-                if self._terminate.is_set():
-                    break
-                self._start.clear()
-                logger.debug('server: starting {}'.format(self.status))
-                try:
-                    async with websockets.serve(ws_handler=hello,
-                                                process_request=redirect,
-                                                host='localhost',
-                                                port=self.port,
-                                                ssl=self.ssl_context,
-                                                loop=self.loop):
-                        self.stopped.clear()
-                        self.running.set()
-                        logger.debug('server: started')
-                        while not self._stop.is_set():
-                            await run_with_interrupt(
-                                asyncio.sleep(1, loop=self.loop),
-                                self._stop,
-                                loop=self.loop)
-                            logger.debug('server: tick')
-                        logger.debug('server: stopping')
-                except asyncio.CancelledError:
-                    break
-                finally:
-                    self.stopped.set()
-                    self._stop.clear()
-                    self.running.clear()
-                    logger.debug('server: stopped')
-            logger.debug('server: terminating')
-        except asyncio.CancelledError:
-            pass
-        finally:
-            self._start.clear()
-            self._stop.clear()
-            self._terminate.clear()
-            self.stopped.set()
-            self.running.clear()
-            self.terminated.set()
-            logger.debug('server: terminated')
-
-    def _find_free_port(self):
-        with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
-            s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-            s.bind(('', 0))
-            return s.getsockname()[1]
diff --git a/modules/libjuju/tests/integration/test_controller.py b/modules/libjuju/tests/integration/test_controller.py
deleted file mode 100644
index 6423a98..0000000
--- a/modules/libjuju/tests/integration/test_controller.py
+++ /dev/null
@@ -1,228 +0,0 @@
-import asyncio
-import subprocess
-import uuid
-
-from juju.client.connection import Connection
-from juju.client.jujudata import FileJujuData
-from juju.controller import Controller
-from juju.errors import JujuAPIError
-
-import pytest
-
-from .. import base
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_add_remove_user(event_loop):
-    async with base.CleanController() as controller:
-        username = 'test{}'.format(uuid.uuid4())
-        user = await controller.get_user(username)
-        assert user is None
-        user = await controller.add_user(username)
-        assert user is not None
-        assert user.secret_key is not None
-        assert user.username == username
-        users = await controller.get_users()
-        assert any(u.username == username for u in users)
-        await controller.remove_user(username)
-        user = await controller.get_user(username)
-        assert user is None
-        users = await controller.get_users()
-        assert not any(u.username == username for u in users)
-
-
-@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())
-        user = await controller.add_user(username)
-
-        await user.disable()
-        assert not user.enabled
-        assert user.disabled
-
-        fresh = await controller.get_user(username)  # fetch fresh copy
-        assert not fresh.enabled
-        assert fresh.disabled
-
-        await user.enable()
-        assert user.enabled
-        assert not user.disabled
-
-        fresh = await controller.get_user(username)  # fetch fresh copy
-        assert fresh.enabled
-        assert not fresh.disabled
-
-
-@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())
-        user = await controller.add_user(username)
-        await user.set_password('password')
-        # Check that we can connect with the new password.
-        new_connection = None
-        try:
-            kwargs = controller.connection().connect_params()
-            kwargs['username'] = username
-            kwargs['password'] = 'password'
-            new_connection = await Connection.connect(**kwargs)
-        except JujuAPIError:
-            raise AssertionError('Unable to connect with new password')
-        finally:
-            if new_connection:
-                await new_connection.close()
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_reset_user_password(event_loop):
-    async with base.CleanController() as controller:
-        username = 'test{}'.format(uuid.uuid4())
-        user = await controller.add_user(username)
-        origin_secret_key = user.secret_key
-        await user.set_password('password')
-        await controller.reset_user_password(username)
-        user = await controller.get_user(username)
-        new_secret_key = user.secret_key
-        # Check secret key is different after the reset.
-        assert origin_secret_key != new_secret_key
-        # Check that we can't connect with the old password.
-        new_connection = None
-        try:
-            kwargs = controller.connection().connect_params()
-            kwargs['username'] = username
-            kwargs['password'] = 'password'
-            new_connection = await Connection.connect(**kwargs)
-        except JujuAPIError:
-            pass
-        finally:
-            # No connection with old password
-            assert new_connection is None
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_grant_revoke(event_loop):
-    async with base.CleanController() as controller:
-        username = 'test-grant{}'.format(uuid.uuid4())
-        user = await controller.add_user(username)
-        await user.grant('superuser')
-        assert user.access == 'superuser'
-        fresh = await controller.get_user(username)  # fetch fresh copy
-        assert fresh.access == 'superuser'
-        await user.grant('login')  # already has 'superuser', so no-op
-        assert user.access == 'superuser'
-        fresh = await controller.get_user(username)  # fetch fresh copy
-        assert fresh.access == 'superuser'
-        await user.revoke()
-        assert user.access == ''
-        fresh = await controller.get_user(username)  # fetch fresh copy
-        assert fresh.access == ''
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_list_models(event_loop):
-    async with base.CleanController() as controller:
-        async with base.CleanModel() as model:
-            result = await controller.list_models()
-            assert model.info.name in result
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_get_model(event_loop):
-    async with base.CleanController() as controller:
-        by_name, by_uuid = None, None
-        model_name = 'test-{}'.format(uuid.uuid4())
-        model = await controller.add_model(model_name)
-        model_uuid = model.info.uuid
-        await model.disconnect()
-        try:
-            by_name = await controller.get_model(model_name)
-            by_uuid = await controller.get_model(model_uuid)
-            assert by_name.info.name == model_name
-            assert by_name.info.uuid == model_uuid
-            assert by_uuid.info.name == model_name
-            assert by_uuid.info.uuid == model_uuid
-        finally:
-            if by_name:
-                await by_name.disconnect()
-            if by_uuid:
-                await by_uuid.disconnect()
-            await controller.destroy_model(model_name)
-
-
-async def _wait_for_model(controller, model_name):
-    while model_name not in await controller.list_models():
-        await asyncio.sleep(0.5, loop=controller.loop)
-
-
-async def _wait_for_model_gone(controller, model_name):
-    while model_name in await controller.list_models():
-        await asyncio.sleep(0.5, loop=controller.loop)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_destroy_model_by_name(event_loop):
-    async with base.CleanController() as controller:
-        model_name = 'test-{}'.format(uuid.uuid4())
-        model = await controller.add_model(model_name)
-        await model.disconnect()
-        await asyncio.wait_for(_wait_for_model(controller,
-                                               model_name),
-                               timeout=60)
-        await controller.destroy_model(model_name)
-        await asyncio.wait_for(_wait_for_model_gone(controller,
-                                                    model_name),
-                               timeout=60)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_add_destroy_model_by_uuid(event_loop):
-    async with base.CleanController() as controller:
-        model_name = 'test-{}'.format(uuid.uuid4())
-        model = await controller.add_model(model_name)
-        model_uuid = model.info.uuid
-        await model.disconnect()
-        await asyncio.wait_for(_wait_for_model(controller,
-                                               model_name),
-                               timeout=60)
-        await controller.destroy_model(model_uuid)
-        await asyncio.wait_for(_wait_for_model_gone(controller,
-                                                    model_name),
-                               timeout=60)
-
-
-# this test must be run serially because it modifies the login password
-@pytest.mark.serial
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_macaroon_auth(event_loop):
-    jujudata = FileJujuData()
-    account = jujudata.accounts()[jujudata.current_controller()]
-    with base.patch_file('~/.local/share/juju/accounts.yaml'):
-        if 'password' in account:
-            # force macaroon auth by "changing" password to current password
-            result = subprocess.run(
-                ['juju', 'change-user-password'],
-                input='{0}\n{0}\n'.format(account['password']),
-                universal_newlines=True,
-                stderr=subprocess.PIPE)
-            assert result.returncode == 0, ('Failed to change password: '
-                                            '{}'.format(result.stderr))
-        controller = Controller()
-        try:
-            await controller.connect()
-            assert controller.is_connected()
-        finally:
-            if controller.is_connected():
-                await controller.disconnect()
-        async with base.CleanModel():
-            pass  # create and login to model works
diff --git a/modules/libjuju/tests/integration/test_errors.py b/modules/libjuju/tests/integration/test_errors.py
deleted file mode 100644
index b10dd06..0000000
--- a/modules/libjuju/tests/integration/test_errors.py
+++ /dev/null
@@ -1,68 +0,0 @@
-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 --git a/modules/libjuju/tests/integration/test_macaroon_auth.py b/modules/libjuju/tests/integration/test_macaroon_auth.py
deleted file mode 100644
index 9911c41..0000000
--- a/modules/libjuju/tests/integration/test_macaroon_auth.py
+++ /dev/null
@@ -1,108 +0,0 @@
-import logging
-import os
-
-import macaroonbakery.bakery as bakery
-import macaroonbakery.httpbakery as httpbakery
-import macaroonbakery.httpbakery.agent as agent
-from juju.errors import JujuAPIError
-from juju.model import Model
-
-import pytest
-
-from .. import base
-
-log = logging.getLogger(__name__)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-@pytest.mark.xfail
-async def test_macaroon_auth(event_loop):
-    auth_info, username = agent_auth_info()
-    # Create a bakery client that can do agent authentication.
-    client = httpbakery.Client(
-        key=auth_info.key,
-        interaction_methods=[agent.AgentInteractor(auth_info)],
-    )
-
-    async with base.CleanModel(bakery_client=client) as m:
-        async with await m.get_controller() as c:
-            await c.grant_model(username, m.info.uuid, 'admin')
-        async with Model(
-            jujudata=NoAccountsJujuData(m._connector.jujudata),
-            bakery_client=client,
-        ):
-            pass
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-@pytest.mark.xfail
-async def test_macaroon_auth_with_bad_key(event_loop):
-    auth_info, username = agent_auth_info()
-    # Use a random key rather than the correct key.
-    auth_info = auth_info._replace(key=bakery.generate_key())
-    # Create a bakery client can do agent authentication.
-    client = httpbakery.Client(
-        key=auth_info.key,
-        interaction_methods=[agent.AgentInteractor(auth_info)],
-    )
-
-    async with base.CleanModel(bakery_client=client) as m:
-        async with await m.get_controller() as c:
-            await c.grant_model(username, m.info.uuid, 'admin')
-        try:
-            async with Model(
-                jujudata=NoAccountsJujuData(m._connector.jujudata),
-                bakery_client=client,
-            ):
-                pytest.fail('Should not be able to connect with invalid key')
-        except httpbakery.BakeryException:
-            # We're expecting this because we're using the
-            # wrong key.
-            pass
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_macaroon_auth_with_unauthorized_user(event_loop):
-    auth_info, username = agent_auth_info()
-    # Create a bakery client can do agent authentication.
-    client = httpbakery.Client(
-        key=auth_info.key,
-        interaction_methods=[agent.AgentInteractor(auth_info)],
-    )
-    async with base.CleanModel(bakery_client=client) as m:
-        # Note: no grant of rights to the agent user.
-        try:
-            async with Model(
-                jujudata=NoAccountsJujuData(m._connector.jujudata),
-                bakery_client=client,
-            ):
-                pytest.fail('Should not be able to connect without grant')
-        except (JujuAPIError, httpbakery.DischargeError):
-            # We're expecting this because we're using the
-            # wrong user name.
-            pass
-
-
-def agent_auth_info():
-    agent_data = os.environ.get('TEST_AGENTS')
-    if agent_data is None:
-        pytest.skip('skipping macaroon_auth because no TEST_AGENTS '
-                    'environment variable is set')
-    auth_info = agent.read_auth_info(agent_data)
-    if len(auth_info.agents) != 1:
-        raise Exception('TEST_AGENTS agent data requires exactly one agent')
-    return auth_info, auth_info.agents[0].username
-
-
-class NoAccountsJujuData:
-    def __init__(self, jujudata):
-        self.__jujudata = jujudata
-
-    def __getattr__(self, name):
-        return getattr(self.__jujudata, name)
-
-    def accounts(self):
-        return {}
diff --git a/modules/libjuju/tests/integration/test_machine.py b/modules/libjuju/tests/integration/test_machine.py
deleted file mode 100644
index 070208a..0000000
--- a/modules/libjuju/tests/integration/test_machine.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import asyncio
-from tempfile import NamedTemporaryFile
-
-import pytest
-
-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
-
-        # there is some inconsistency in the capitalization of status_message
-        # between different providers
-        await asyncio.wait_for(
-            model.block_until(
-                lambda: (machine.status == 'running' and
-                         machine.status_message.lower() == 'running' and
-                         machine.agent_status == 'started')),
-            timeout=480)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_scp(event_loop):
-    # ensure that asyncio.subprocess will work;
-    try:
-        asyncio.get_child_watcher().attach_loop(event_loop)
-    except RuntimeError:
-        pytest.skip('test_scp will always fail outside of MainThread')
-    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', scp_opts='-p')
-
-        with NamedTemporaryFile() as f:
-            await machine.scp_from('testfile', f.name, scp_opts='-p')
-            assert f.read() == b'testcontents'
diff --git a/modules/libjuju/tests/integration/test_model.py b/modules/libjuju/tests/integration/test_model.py
deleted file mode 100644
index 58766b4..0000000
--- a/modules/libjuju/tests/integration/test_model.py
+++ /dev/null
@@ -1,485 +0,0 @@
-import asyncio
-import mock
-from concurrent.futures import ThreadPoolExecutor
-from pathlib import Path
-import paramiko
-
-from juju.client.client import ConfigValue, ApplicationFacade
-from juju.model import Model, ModelObserver
-from juju.utils import block_until, run_with_interrupt
-from juju.errors import JujuError
-
-import os
-import pylxd
-import time
-import uuid
-
-import pytest
-
-from .. import base
-
-
-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_dir(event_loop):
-    tests_dir = Path(__file__).absolute().parent.parent
-    bundle_path = tests_dir / 'bundle'
-    mini_bundle_file_path = bundle_path / 'mini-bundle.yaml'
-
-    async with base.CleanModel() as model:
-        await model.deploy(str(bundle_path))
-        await model.deploy(str(mini_bundle_file_path))
-
-        wordpress = model.applications.get('wordpress')
-        mysql = model.applications.get('mysql')
-        assert wordpress and mysql
-        await block_until(lambda: (len(wordpress.units) == 1 and
-                                   len(mysql.units) == 1),
-                          timeout=60 * 4)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_deploy_local_bundle_file(event_loop):
-    tests_dir = Path(__file__).absolute().parent.parent
-    bundle_path = tests_dir / 'bundle'
-    mini_bundle_file_path = bundle_path / 'mini-bundle.yaml'
-
-    async with base.CleanModel() as model:
-        await model.deploy(str(mini_bundle_file_path))
-
-        dummy_sink = model.applications.get('dummy-sink')
-        dummy_subordinate = model.applications.get('dummy-subordinate')
-        assert dummy_sink and dummy_subordinate
-        await block_until(lambda: (len(dummy_sink.units) == 1 and
-                                   len(dummy_subordinate.units) == 1),
-                          timeout=60 * 4)
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_deploy_invalid_bundle(event_loop):
-    tests_dir = Path(__file__).absolute().parent.parent
-    bundle_path = tests_dir / 'bundle' / 'invalid.yaml'
-    async with base.CleanModel() as model:
-        with pytest.raises(JujuError):
-            await model.deploy(str(bundle_path))
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_deploy_local_charm(event_loop):
-    from pathlib import Path
-    tests_dir = Path(__file__).absolute().parent.parent
-    charm_path = tests_dir / 'charm'
-
-    async with base.CleanModel() as model:
-        await model.deploy(str(charm_path))
-        assert 'charm' in model.applications
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_deploy_invalid_bundle(event_loop):
-    tests_dir = Path(__file__).absolute().parent.parent
-    bundle_path = tests_dir / 'bundle' / 'invalid.yaml'
-    async with base.CleanModel() as model:
-        with pytest.raises(JujuError):
-            await model.deploy(str(bundle_path))
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_deploy_local_charm(event_loop):
-    from pathlib import Path
-    tests_dir = Path(__file__).absolute().parent.parent
-    charm_path = tests_dir / 'charm'
-
-    async with base.CleanModel() as model:
-        await model.deploy(str(charm_path))
-        assert 'charm' 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_add_manual_machine_ssh(event_loop):
-
-    # Verify controller is localhost
-    async with base.CleanController() as controller:
-        cloud = await controller.get_cloud()
-        if cloud != "localhost":
-            pytest.skip('Skipping because test requires lxd.')
-
-    async with base.CleanModel() as model:
-        private_key_path = os.path.expanduser(
-            "~/.local/share/juju/ssh/juju_id_rsa"
-        )
-        public_key_path = os.path.expanduser(
-            "~/.local/share/juju/ssh/juju_id_rsa.pub"
-        )
-
-        # connect using the local unix socket
-        client = pylxd.Client()
-
-        test_name = "test-{}-add-manual-machine-ssh".format(
-            uuid.uuid4().hex[-4:]
-        )
-
-        # create profile w/cloud-init and juju ssh key
-        public_key = ""
-        with open(public_key_path, "r") as f:
-            public_key = f.readline()
-
-        profile = client.profiles.create(
-            test_name,
-            config={'user.user-data': '#cloud-config\n'
-                                      'ssh_authorized_keys:\n'
-                                      '- {}'.format(public_key)},
-            devices={
-                'root': {'path': '/', 'pool': 'default', 'type': 'disk'},
-                'eth0': {
-                    'nictype': 'bridged',
-                    'parent': 'lxdbr0',
-                    'type': 'nic'
-                }
-            }
-        )
-
-        # create lxc machine
-        config = {
-            'name': test_name,
-            'source': {
-                'type': 'image',
-                'alias': 'xenial',
-                'mode': 'pull',
-                'protocol': 'simplestreams',
-                'server': 'https://cloud-images.ubuntu.com/releases',
-            },
-            'profiles': [test_name],
-        }
-        container = client.containers.create(config, wait=True)
-        container.start(wait=True)
-
-        def wait_for_network(container, timeout=30):
-            """Wait for eth0 to have an ipv4 address."""
-            starttime = time.time()
-            while(time.time() < starttime + timeout):
-                time.sleep(1)
-                if 'eth0' in container.state().network:
-                    addresses = container.state().network['eth0']['addresses']
-                    if len(addresses) > 0:
-                        if addresses[0]['family'] == 'inet':
-                            return addresses[0]
-            return None
-
-        host = wait_for_network(container)
-        assert host, 'Failed to get address for machine'
-
-        # HACK: We need to give sshd a chance to bind to the interface,
-        # and pylxd's container.execute seems to be broken and fails and/or
-        # hangs trying to properly check if the service is up.
-        time.sleep(5)
-
-        for attempt in range(1, 4):
-            try:
-                # add a new manual machine
-                machine1 = await model.add_machine(spec='ssh:{}@{}:{}'.format(
-                    "ubuntu",
-                    host['address'],
-                    private_key_path,
-                ))
-            except paramiko.ssh_exception.NoValidConnectionsError:
-                if attempt == 3:
-                    raise
-                # retry the ssh connection a few times if it fails
-                time.sleep(attempt * 5)
-            else:
-                break
-
-            assert len(model.machines) == 1
-
-            res = await machine1.destroy(force=True)
-
-            assert res is None
-            assert len(model.machines) == 0
-
-        container.stop(wait=True)
-        container.delete(wait=True)
-
-        profile.delete()
-
-
-@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,
-        )
-
-        relation_added = asyncio.Event()
-        timeout = asyncio.Event()
-
-        class TestObserver(ModelObserver):
-            async def on_relation_add(self, delta, old, new, model):
-                if set(new.key.split()) == {'nrpe:general-info',
-                                            'ubuntu:juju-info'}:
-                    relation_added.set()
-                    event_loop.call_later(2, timeout.set)
-
-        model.add_observer(TestObserver())
-
-        real_app_facade = ApplicationFacade.from_connection(model.connection())
-        mock_app_facade = mock.MagicMock()
-
-        async def mock_AddRelation(*args):
-            # force response delay from AddRelation to test race condition
-            # (see https://github.com/juju/python-libjuju/issues/191)
-            result = await real_app_facade.AddRelation(*args)
-            await relation_added.wait()
-            return result
-
-        mock_app_facade.AddRelation = mock_AddRelation
-
-        with mock.patch.object(ApplicationFacade, 'from_connection',
-                               return_value=mock_app_facade):
-            my_relation = await run_with_interrupt(model.add_relation(
-                'ubuntu',
-                'nrpe',
-            ), timeout, loop=event_loop)
-
-        assert isinstance(my_relation, Relation)
-
-
-async def _deploy_in_loop(new_loop, model_name, jujudata):
-    new_model = Model(new_loop, jujudata=jujudata)
-    await new_model.connect(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_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,
-                                model._connector.jujudata))
-            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'
-        resources = await ghost.get_resources()
-        assert resources['ghost-stable'].revision >= 12
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_store_resources_bundle_revs(event_loop):
-    async with base.CleanModel() as model:
-        bundle = str(Path(__file__).parent / 'bundle/bundle-resource-rev.yaml')
-        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'
-        resources = await ghost.get_resources()
-        assert resources['ghost-stable'].revision == 11
-
-
-@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 block_until(model.is_connected, timeout=3)
-
-
-@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_set_constraints(event_loop):
-    async with base.CleanModel() as model:
-        await model.set_constraints({'cpu-power': 1})
-        cons = await model.get_constraints()
-        assert cons['cpu_power'] == 1
-
-# @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 --git a/modules/libjuju/tests/integration/test_unit.py b/modules/libjuju/tests/integration/test_unit.py
deleted file mode 100644
index bb34969..0000000
--- a/modules/libjuju/tests/integration/test_unit.py
+++ /dev/null
@@ -1,99 +0,0 @@
-import asyncio
-from tempfile import NamedTemporaryFile
-
-import pytest
-
-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
-
-        for unit in app.units:
-            action = await unit.run('sleep 1', timeout=0.5)
-            assert isinstance(action, Action)
-            assert action.status == 'failed'
-            break
-
-        for unit in app.units:
-            action = await unit.run('sleep 0.5', timeout=2)
-            assert isinstance(action, Action)
-            assert action.status == 'completed'
-            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'}
-            out = await model.get_action_output(action.entity_id, wait=5)
-            assert out == {'dir': '/var/git/myrepo.git'}
-            status = await model.get_action_status(uuid_or_prefix=action.entity_id)
-            assert status[action.entity_id] == 'completed'
-            break
-
-
-@base.bootstrapped
-@pytest.mark.asyncio
-async def test_scp(event_loop):
-    # ensure that asyncio.subprocess will work;
-    try:
-        asyncio.get_child_watcher().attach_loop(event_loop)
-    except RuntimeError:
-        pytest.skip('test_scp will always fail outside of MainThread')
-    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 --git a/modules/libjuju/tests/unit/__init__.py b/modules/libjuju/tests/unit/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/modules/libjuju/tests/unit/__init__.py
+++ /dev/null
diff --git a/modules/libjuju/tests/unit/test_client.py b/modules/libjuju/tests/unit/test_client.py
deleted file mode 100644
index 1d18bf9..0000000
--- a/modules/libjuju/tests/unit/test_client.py
+++ /dev/null
@@ -1,26 +0,0 @@
-"""
-Tests for generated client code
-
-"""
-
-import mock
-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)
-    assert action_facade
-
-
-def test_to_json():
-    uml = client.UserModelList([client.UserModel()])
-    assert uml.to_json() == ('{"user-models": [{"last-connection": null, '
-                             '"model": null}]}')
diff --git a/modules/libjuju/tests/unit/test_connection.py b/modules/libjuju/tests/unit/test_connection.py
deleted file mode 100644
index 0925d84..0000000
--- a/modules/libjuju/tests/unit/test_connection.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import asyncio
-import json
-from collections import deque
-
-import mock
-from juju.client.connection import Connection
-from websockets.exceptions import ConnectionClosed
-
-import pytest
-
-from .. import base
-
-
-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):
-    ws = WebsocketMock([
-        {'request-id': 1},
-        {'request-id': 3},
-        {'request-id': 2},
-    ])
-    expected_responses = [
-        {'request-id': 1},
-        {'request-id': 2},
-        {'request-id': 3},
-    ]
-    minimal_facades = [{'name': 'Pinger', 'versions': [1]}]
-    con = None
-    try:
-        with \
-                mock.patch('websockets.connect', base.AsyncMock(return_value=ws)), \
-                mock.patch(
-                    'juju.client.connection.Connection.login',
-                    base.AsyncMock(return_value={'response': {
-                        'facades': minimal_facades,
-                    }}),
-                ), \
-                mock.patch('juju.client.connection.Connection._get_ssl'), \
-                mock.patch('juju.client.connection.Connection._pinger', base.AsyncMock()):
-            con = await Connection.connect('0.1.2.3:999')
-        actual_responses = []
-        for i in range(3):
-            actual_responses.append(await con.rpc({'version': 1}))
-        assert actual_responses == expected_responses
-    finally:
-        if con:
-            await con.close()
diff --git a/modules/libjuju/tests/unit/test_constraints.py b/modules/libjuju/tests/unit/test_constraints.py
deleted file mode 100644
index 3c52090..0000000
--- a/modules/libjuju/tests/unit/test_constraints.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# 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_normalize_list_val(self):
-        _ = constraints.normalize_list_value
-
-        self.assertEqual(_("foo"), ["foo"])
-        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 tags=tag1 spaces=space1,space2"),
-            {"mem": 10 * 1024,
-             "foo": "bar,baz",
-             "tags": ["tag1"],
-             "spaces": ["space1", "space2"]}
-        )
diff --git a/modules/libjuju/tests/unit/test_controller.py b/modules/libjuju/tests/unit/test_controller.py
deleted file mode 100644
index b95b5ee..0000000
--- a/modules/libjuju/tests/unit/test_controller.py
+++ /dev/null
@@ -1,140 +0,0 @@
-import asynctest
-import mock
-from pathlib import Path
-from tempfile import NamedTemporaryFile
-
-from juju.controller import Controller
-from juju.client import client
-
-from .. import base
-
-
-class TestControllerConnect(asynctest.TestCase):
-    @asynctest.patch('juju.client.connector.Connector.connect_controller')
-    async def test_no_args(self, mock_connect_controller):
-        c = Controller()
-        await c.connect()
-        mock_connect_controller.assert_called_once_with(None)
-
-    @asynctest.patch('juju.client.connector.Connector.connect_controller')
-    async def test_with_controller_name(self, mock_connect_controller):
-        c = Controller()
-        await c.connect(controller_name='foo')
-        mock_connect_controller.assert_called_once_with('foo')
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_no_auth(self, mock_connect):
-        c = Controller()
-        with self.assertRaises(TypeError):
-            await c.connect(endpoint='0.1.2.3:4566')
-        self.assertEqual(mock_connect.call_count, 0)
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_userpass(self, mock_connect):
-        c = Controller()
-        with self.assertRaises(TypeError):
-            await c.connect(endpoint='0.1.2.3:4566', username='dummy')
-        await c.connect(endpoint='0.1.2.3:4566',
-                        username='user',
-                        password='pass')
-        mock_connect.assert_called_once_with(endpoint='0.1.2.3:4566',
-                                             username='user',
-                                             password='pass')
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_bakery_client(self, mock_connect):
-        c = Controller()
-        await c.connect(endpoint='0.1.2.3:4566', bakery_client='bakery')
-        mock_connect.assert_called_once_with(endpoint='0.1.2.3:4566',
-                                             bakery_client='bakery')
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_macaroons(self, mock_connect):
-        c = Controller()
-        await c.connect(endpoint='0.1.2.3:4566',
-                        macaroons=['macaroon'])
-        mock_connect.assert_called_with(endpoint='0.1.2.3:4566',
-                                        macaroons=['macaroon'])
-        await c.connect(endpoint='0.1.2.3:4566',
-                        bakery_client='bakery',
-                        macaroons=['macaroon'])
-        mock_connect.assert_called_with(endpoint='0.1.2.3:4566',
-                                        bakery_client='bakery',
-                                        macaroons=['macaroon'])
-
-    @asynctest.patch('juju.client.connector.Connector.connect_controller')
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_posargs(self, mock_connect, mock_connect_controller):
-        c = Controller()
-        await c.connect('foo')
-        mock_connect_controller.assert_called_once_with('foo')
-        with self.assertRaises(TypeError):
-            await c.connect('endpoint', 'user')
-        await c.connect('endpoint', 'user', 'pass')
-        mock_connect.assert_called_once_with(endpoint='endpoint',
-                                             username='user',
-                                             password='pass')
-        await c.connect('endpoint', 'user', 'pass', 'cacert', 'bakery',
-                        'macaroons', 'loop', 'max_frame_size')
-        mock_connect.assert_called_with(endpoint='endpoint',
-                                        username='user',
-                                        password='pass',
-                                        cacert='cacert',
-                                        bakery_client='bakery',
-                                        macaroons='macaroons',
-                                        loop='loop',
-                                        max_frame_size='max_frame_size')
-
-    @asynctest.patch('juju.client.client.CloudFacade')
-    async def test_file_cred_v2(self, mock_cf):
-        with NamedTemporaryFile() as tempfile:
-            tempfile.close()
-            temppath = Path(tempfile.name)
-            temppath.write_text('cred-test')
-            cred = client.CloudCredential(auth_type='jsonfile',
-                                          attrs={'file': tempfile.name})
-            jujudata = mock.MagicMock()
-            c = Controller(jujudata=jujudata)
-            c._connector = base.AsyncMock()
-            up_creds = base.AsyncMock()
-            cloud_facade = mock_cf.from_connection()
-            cloud_facade.version = 2
-            cloud_facade.UpdateCredentials = up_creds
-            await c.add_credential(
-                name='name',
-                credential=cred,
-                cloud='cloud',
-                owner='owner',
-            )
-            assert up_creds.called
-            new_cred = up_creds.call_args[0][0][0].credential
-            assert cred.attrs['file'] == tempfile.name
-            assert new_cred.attrs['file'] == 'cred-test'
-
-    @asynctest.patch('juju.client.client.CloudFacade')
-    async def test_file_cred_v3(self, mock_cf):
-        with NamedTemporaryFile() as tempfile:
-            tempfile.close()
-            temppath = Path(tempfile.name)
-            temppath.write_text('cred-test')
-            cred = client.CloudCredential(auth_type='jsonfile',
-                                          attrs={'file': tempfile.name})
-            jujudata = mock.MagicMock()
-            c = Controller(jujudata=jujudata)
-            c._connector = base.AsyncMock()
-            up_creds = base.AsyncMock()
-            cloud_facade = mock_cf.from_connection()
-            cloud_facade.version = 3
-            cloud_facade.UpdateCredentialsCheckModels = up_creds
-            await c.add_credential(
-                name='name',
-                credential=cred,
-                cloud='cloud',
-                owner='owner',
-                force=True,
-            )
-            assert up_creds.called
-            assert up_creds.call_args[1]['force']
-            new_cred = up_creds.call_args[1]['credentials'][0].credential
-            assert cred.attrs['file'] == tempfile.name
-            assert new_cred.attrs['file'] == 'cred-test'
diff --git a/modules/libjuju/tests/unit/test_gocookies.py b/modules/libjuju/tests/unit/test_gocookies.py
deleted file mode 100644
index 033a0e9..0000000
--- a/modules/libjuju/tests/unit/test_gocookies.py
+++ /dev/null
@@ -1,244 +0,0 @@
-"""
-Tests for the gocookies code.
-"""
-import os
-import shutil
-import tempfile
-import unittest
-import urllib.request
-
-import pyrfc3339
-from juju.client.gocookies import GoCookieJar
-
-# cookie_content holds the JSON contents of a Go-produced
-# cookie file (reformatted so it's not all on one line but
-# otherwise unchanged).
-cookie_content = """
-[
-    {
-        "CanonicalHost": "bar.com",
-        "Creation": "2017-11-17T08:53:55.088820092Z",
-        "Domain": "bar.com",
-        "Expires": "2345-11-15T18:16:08Z",
-        "HostOnly": true,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088822562Z",
-        "Name": "bar",
-        "Path": "/",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088822562Z",
-        "Value": "bar-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088814857Z",
-        "Domain": "x.foo.com",
-        "Expires": "2345-11-15T18:16:05Z",
-        "HostOnly": true,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088884015Z",
-        "Name": "foo",
-        "Path": "/path",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088814857Z",
-        "Value": "foo-path-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088814857Z",
-        "Domain": "foo.com",
-        "Expires": "2345-11-15T18:16:06Z",
-        "HostOnly": false,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088919437Z",
-        "Name": "foo4",
-        "Path": "/path",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088814857Z",
-        "Value": "foo4-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088790709Z",
-        "Domain": "x.foo.com",
-        "Expires": "2345-11-15T18:16:01Z",
-        "HostOnly": true,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088884015Z",
-        "Name": "foo",
-        "Path": "/",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088790709Z",
-        "Value": "foo-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088790709Z",
-        "Domain": "foo.com",
-        "Expires": "2345-11-15T18:16:02Z",
-        "HostOnly": false,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088919437Z",
-        "Name": "foo1",
-        "Path": "/",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088790709Z",
-        "Value": "foo1-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088790709Z",
-        "Domain": "x.foo.com",
-        "Expires": "2345-11-15T18:16:03Z",
-        "HostOnly": true,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088850252Z",
-        "Name": "foo2",
-        "Path": "/",
-        "Persistent": true,
-        "Secure": true,
-        "Updated": "2017-11-17T08:53:55.088790709Z",
-        "Value": "foo2-value"
-    },
-    {
-        "CanonicalHost": "x.foo.com",
-        "Creation": "2017-11-17T08:53:55.088790709Z",
-        "Domain": "foo.com",
-        "Expires": "2345-11-15T18:16:04Z",
-        "HostOnly": false,
-        "HttpOnly": false,
-        "LastAccess": "2017-11-17T08:53:55.088919437Z",
-        "Name": "foo3",
-        "Path": "/",
-        "Persistent": true,
-        "Secure": false,
-        "Updated": "2017-11-17T08:53:55.088790709Z",
-        "Value": "foo3-value"
-    }
-]
-"""
-
-# cookie_content_queries holds a set of queries
-# that were automatically generated by running
-# the queries on the above cookie_content data
-# and printing the results.
-cookie_content_queries = [
-    ('http://x.foo.com', [
-        ('foo', 'foo-value'),
-        ('foo1', 'foo1-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-    ('https://x.foo.com', [
-        ('foo', 'foo-value'),
-        ('foo1', 'foo1-value'),
-        ('foo2', 'foo2-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-    ('http://arble.foo.com', [
-        ('foo1', 'foo1-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-    ('http://arble.com', [
-    ]),
-    ('http://x.foo.com/path/x', [
-        ('foo', 'foo-path-value'),
-        ('foo4', 'foo4-value'),
-        ('foo', 'foo-value'),
-        ('foo1', 'foo1-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-    ('http://arble.foo.com/path/x', [
-        ('foo4', 'foo4-value'),
-        ('foo1', 'foo1-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-    ('http://foo.com/path/x', [
-        ('foo4', 'foo4-value'),
-        ('foo1', 'foo1-value'),
-        ('foo3', 'foo3-value'),
-    ]),
-]
-
-
-class TestGoCookieJar(unittest.TestCase):
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-
-    def tearDown(self):
-        shutil.rmtree(self.dir)
-
-    def test_readcookies(self):
-        jar = self.load_jar(cookie_content)
-        self.assert_jar_queries(jar, cookie_content_queries)
-
-    def test_roundtrip(self):
-        jar = self.load_jar(cookie_content)
-        filename2 = os.path.join(self.dir, 'cookies2')
-        jar.save(filename=filename2)
-        jar = GoCookieJar()
-        jar.load(filename=filename2)
-        self.assert_jar_queries(jar, cookie_content_queries)
-
-    def test_expiry_time(self):
-        content = '''[
-            {
-                "CanonicalHost": "bar.com",
-                "Creation": "2017-11-17T08:53:55.088820092Z",
-                "Domain": "bar.com",
-                "Expires": "2345-11-15T18:16:08Z",
-                "HostOnly": true,
-                "HttpOnly": false,
-                "LastAccess": "2017-11-17T08:53:55.088822562Z",
-                "Name": "bar",
-                "Path": "/",
-                "Persistent": true,
-                "Secure": false,
-                "Updated": "2017-11-17T08:53:55.088822562Z",
-                "Value": "bar-value"
-            }
-        ]'''
-        jar = self.load_jar(content)
-        got_expires = tuple(jar)[0].expires
-        want_expires = int(pyrfc3339.parse('2345-11-15T18:16:08Z').timestamp())
-        self.assertEqual(got_expires, want_expires)
-
-    def load_jar(self, content):
-        filename = os.path.join(self.dir, 'cookies')
-        with open(filename, 'x') as f:
-            f.write(content)
-        jar = GoCookieJar()
-        jar.load(filename=filename)
-        return jar
-
-    def assert_jar_queries(self, jar, queries):
-        '''Assert that all the given queries (see cookie_content_queries)
-        are satisfied when run on the given cookie jar.
-        :param jar CookieJar: the cookie jar to query
-        :param queries: the queries to run.
-        '''
-        for url, want_cookies in queries:
-            req = urllib.request.Request(url)
-            jar.add_cookie_header(req)
-            # We can't use SimpleCookie to find out what cookies
-            # have been presented, because SimpleCookie
-            # only allows one cookie with a given name,
-            # so we naively parse the cookies ourselves, which
-            # is OK because we know we don't have to deal
-            # with any complex cases.
-
-            cookie_header = req.get_header('Cookie')
-            got_cookies = []
-            if cookie_header is not None:
-                got_cookies = [
-                    tuple(part.split('='))
-                    for part in cookie_header.split('; ')
-                ]
-                got_cookies.sort()
-            want_cookies = list(want_cookies)
-            want_cookies.sort()
-            self.assertEqual(got_cookies, want_cookies, msg='query {}; got {}; want {}'.format(url, got_cookies, want_cookies))
diff --git a/modules/libjuju/tests/unit/test_loop.py b/modules/libjuju/tests/unit/test_loop.py
deleted file mode 100644
index 9043df6..0000000
--- a/modules/libjuju/tests/unit/test_loop.py
+++ /dev/null
@@ -1,32 +0,0 @@
-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 --git a/modules/libjuju/tests/unit/test_model.py b/modules/libjuju/tests/unit/test_model.py
deleted file mode 100644
index 2753d85..0000000
--- a/modules/libjuju/tests/unit/test_model.py
+++ /dev/null
@@ -1,264 +0,0 @@
-import unittest
-
-import mock
-
-import asynctest
-
-from juju.client.jujudata import FileJujuData
-from juju.model import Model
-
-
-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
-
-        model = Model()
-        model._connector = mock.MagicMock()
-        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')
-    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')
-    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)
-
-    async def test_no_current_connection(self):
-        from juju.model import Model
-        from juju.errors import JujuConnectionError
-
-        class NoControllerJujuData(FileJujuData):
-            def current_controller(self):
-                return ""
-
-        with self.assertRaises(JujuConnectionError):
-            async with Model(jujudata=NoControllerJujuData()):
-                pass
-
-
-@asynctest.patch('juju.model.Model._after_connect')
-class TestModelConnect(asynctest.TestCase):
-    @asynctest.patch('juju.client.connector.Connector.connect_model')
-    async def test_no_args(self, mock_connect_model, _):
-        m = Model()
-        await m.connect()
-        mock_connect_model.assert_called_once_with(None)
-
-    @asynctest.patch('juju.client.connector.Connector.connect_model')
-    async def test_with_model_name(self, mock_connect_model, _):
-        m = Model()
-        await m.connect(model_name='foo')
-        mock_connect_model.assert_called_once_with('foo')
-
-    @asynctest.patch('juju.client.connector.Connector.connect_model')
-    async def test_with_endpoint_but_no_uuid(self, mock_connect_model, _):
-        m = Model()
-        with self.assertRaises(TypeError):
-            await m.connect(endpoint='0.1.2.3:4566')
-        self.assertEqual(mock_connect_model.call_count, 0)
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_uuid_no_auth(self, mock_connect, _):
-        m = Model()
-        with self.assertRaises(TypeError):
-            await m.connect(endpoint='0.1.2.3:4566', uuid='some-uuid')
-        self.assertEqual(mock_connect.call_count, 0)
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_uuid_with_userpass(self, mock_connect, _):
-        m = Model()
-        with self.assertRaises(TypeError):
-            await m.connect(endpoint='0.1.2.3:4566',
-                            uuid='some-uuid',
-                            username='user')
-        await m.connect(endpoint='0.1.2.3:4566',
-                        uuid='some-uuid',
-                        username='user',
-                        password='pass')
-        mock_connect.assert_called_once_with(endpoint='0.1.2.3:4566',
-                                             uuid='some-uuid',
-                                             username='user',
-                                             password='pass')
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_uuid_with_bakery(self, mock_connect, _):
-        m = Model()
-        await m.connect(endpoint='0.1.2.3:4566',
-                        uuid='some-uuid',
-                        bakery_client='bakery')
-        mock_connect.assert_called_once_with(endpoint='0.1.2.3:4566',
-                                             uuid='some-uuid',
-                                             bakery_client='bakery')
-
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_endpoint_and_uuid_with_macaroon(self, mock_connect, _):
-        m = Model()
-        with self.assertRaises(TypeError):
-            await m.connect(endpoint='0.1.2.3:4566',
-                            uuid='some-uuid',
-                            username='user')
-        await m.connect(endpoint='0.1.2.3:4566',
-                        uuid='some-uuid',
-                        macaroons=['macaroon'])
-        mock_connect.assert_called_with(endpoint='0.1.2.3:4566',
-                                        uuid='some-uuid',
-                                        macaroons=['macaroon'])
-        await m.connect(endpoint='0.1.2.3:4566',
-                        uuid='some-uuid',
-                        bakery_client='bakery',
-                        macaroons=['macaroon'])
-        mock_connect.assert_called_with(endpoint='0.1.2.3:4566',
-                                        uuid='some-uuid',
-                                        bakery_client='bakery',
-                                        macaroons=['macaroon'])
-
-    @asynctest.patch('juju.client.connector.Connector.connect_model')
-    @asynctest.patch('juju.client.connector.Connector.connect')
-    async def test_with_posargs(self, mock_connect, mock_connect_model, _):
-        m = Model()
-        await m.connect('foo')
-        mock_connect_model.assert_called_once_with('foo')
-        with self.assertRaises(TypeError):
-            await m.connect('endpoint', 'uuid')
-        with self.assertRaises(TypeError):
-            await m.connect('endpoint', 'uuid', 'user')
-        await m.connect('endpoint', 'uuid', 'user', 'pass')
-        mock_connect.assert_called_once_with(endpoint='endpoint',
-                                             uuid='uuid',
-                                             username='user',
-                                             password='pass')
-        await m.connect('endpoint', 'uuid', 'user', 'pass', 'cacert', 'bakery',
-                        'macaroons', 'loop', 'max_frame_size')
-        mock_connect.assert_called_with(endpoint='endpoint',
-                                        uuid='uuid',
-                                        username='user',
-                                        password='pass',
-                                        cacert='cacert',
-                                        bakery_client='bakery',
-                                        macaroons='macaroons',
-                                        loop='loop',
-                                        max_frame_size='max_frame_size')
diff --git a/modules/libjuju/tests/unit/test_overrides.py b/modules/libjuju/tests/unit/test_overrides.py
deleted file mode 100644
index a5835ff..0000000
--- a/modules/libjuju/tests/unit/test_overrides.py
+++ /dev/null
@@ -1,76 +0,0 @@
-from juju.client.overrides import Binary, Number  # noqa
-
-import pytest
-
-
-# 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 --git a/modules/libjuju/tests/unit/test_placement.py b/modules/libjuju/tests/unit/test_placement.py
deleted file mode 100644
index 5a933ec..0000000
--- a/modules/libjuju/tests/unit/test_placement.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Test our placement helper
-#
-
-import unittest
-
-from juju import placement
-
-
-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 --git a/modules/libjuju/tests/unit/test_registration_string.py b/modules/libjuju/tests/unit/test_registration_string.py
deleted file mode 100644
index f4fea44..0000000
--- a/modules/libjuju/tests/unit/test_registration_string.py
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Test our placement helper
-#
-
-import unittest
-
-from juju.utils import generate_user_controller_access_token
-
-
-class TestRegistrationString(unittest.TestCase):
-    def test_generate_user_controller_access_token(self):
-        controller_name = "localhost-localhost"
-        endpoints = ["192.168.1.1:17070", "192.168.1.2:17070", "192.168.1.3:17070"]
-        username = "test-01234"
-        secret_key = "paNZrqOw51ONk1kTER6rkm4hdPcg5VgC/dzXYxtUZaM="
-        reg_string = generate_user_controller_access_token(username, endpoints, secret_key, controller_name)
-        assert reg_string == b"MH4TCnRlc3QtMDEyMzQwORMRMTkyLjE2OC4xLjE6MTcwNzATETE5Mi4xNjguMS4yOjE3MDcwExExOTIuMTY4" \
-                             b"LjEuMzoxNzA3MAQgpaNZrqOw51ONk1kTER6rkm4hdPcg5VgC_dzXYxtUZaMTE2xvY2FsaG9zdC1sb2NhbGhvc3QA"
diff --git a/modules/libjuju/tox.ini b/modules/libjuju/tox.ini
deleted file mode 100644
index 350a1fc..0000000
--- a/modules/libjuju/tox.ini
+++ /dev/null
@@ -1,66 +0,0 @@
-# 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 = lint,py3
-skipsdist=True
-
-[pytest]
-markers =
-    serial: mark a test that must run by itself
-
-[testenv]
-basepython=python3
-usedevelop=True
-# for testing with other python versions
-commands = py.test --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}
-passenv =
-    HOME
-    TEST_AGENTS
-deps =
-    asynctest
-    ipdb
-    mock
-    pytest
-    pytest-asyncio
-    pytest-xdist
-    Twine
-    # use fork to pick up fix for https://github.com/aaugustin/websockets/pull/528
-    git+https://github.com/johnsca/websockets@bug/client-redirects#egg=websockets
-
-[testenv:py3]
-# default tox env excludes integration and serial tests
-commands =
-    # These need to be installed in a specific order
-    pip install urllib3==1.22
-    pip install pylxd
-    py.test --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}
-
-[testenv:lint]
-envdir = {toxworkdir}/py3
-commands =
-    flake8 --ignore E501,W504 {posargs} juju tests
-deps =
-    flake8
-
-[testenv:integration]
-envdir = {toxworkdir}/py3
-commands =
-    # These need to be installed in a specific order
-    pip install urllib3==1.22
-    pip install pylxd
-    py.test --tb native -ra -v -s -n auto -k 'integration' -m 'not serial' {posargs}
-
-[testenv:serial]
-# tests that can't be run in parallel
-envdir = {toxworkdir}/py3
-commands = py.test --tb native -ra -v -s {posargs:-m 'serial'}
-
-[testenv:example]
-envdir = {toxworkdir}/py3
-commands = python {posargs}
-
-[flake8]
-exclude = juju/client/_*