Accept new / unknown API fields gracefully (#131)
authorCory Johns <johnsca@gmail.com>
Thu, 1 Jun 2017 18:14:54 +0000 (14:14 -0400)
committerGitHub <noreply@github.com>
Thu, 1 Jun 2017 18:14:54 +0000 (14:14 -0400)
* Accept new / unknown API fields gracefully

From discussions in Montreal, it seems that new fields in the Juju
schema definitions are expected to be handled gracefully even without a
bump to the facade version. That is, facade versions will only be bumped
if a field is removed or changed.

Fixes #130

* Update schema and generated code for juju-2.2-rc1

The agent-version field that was added to ModelInfo is of a type that
requires some special parsing and serialization logic.  This type was
used before but not in an API that we were apparently exercising.

13 files changed:
CONTRIBUTORS
docs/index.rst
docs/upstream-updates/index.rst [new file with mode: 0644]
juju/client/_client1.py
juju/client/_client2.py
juju/client/_client3.py
juju/client/_client5.py
juju/client/_definitions.py
juju/client/facade.py
juju/client/overrides.py
juju/client/schemas-juju-2.2-rc1.json [new file with mode: 0644]
juju/client/schemas-juju-latest.json [changed from file to symlink]
tests/unit/test_overrides.py [new file with mode: 0644]

index 23054dc..3895eaa 100644 (file)
@@ -1,2 +1,4 @@
 Benjamin Saller
 Tim Van Steenburgh
+Cory Johns
+Pete VanderGiessen
index 70f0c50..2e45311 100644 (file)
@@ -16,6 +16,7 @@ Table of Contents
 
    narrative/index
    API Docs <api/modules>
+   upstream-updates/index
 
 
 .. include:: changelog.rst
diff --git a/docs/upstream-updates/index.rst b/docs/upstream-updates/index.rst
new file mode 100644 (file)
index 0000000..175ab38
--- /dev/null
@@ -0,0 +1,66 @@
+Upstream Updates
+================
+
+Updating the facade and definitions code generated from the schema
+to reflect changes in upstream Juju consists of two steps:
+
+* Creating a new `schema-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/schema-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/schema-juju-latest.json
+  ln -s schema-juju-2.2-rc1.json juju/client/schema-juju-latest.json
+
+
+Generating the Python Code
+--------------------------
+
+Once you have a new schema file, you can update the Python code
+using the `client` make target:
+
+.. code:: bash
+
+  make client
+
+You should expect to see updates to the `juju/client/_definitions.py` file,
+as well as one or more of the `juju/client/_clientX.py` files, depending on
+which facades were touched.
+
+
+Overrides
+---------
+
+It should be quite rare, but occasionally the generated Python code does
+not capture all of the logic needed to properly parse the output from the API
+or may otherwise need some small amount of tweaking.  This is what the
+`juju/client/overrides.py` file is for.  An example of this is the `Number`
+type, which isn't standard JSON and must be parsed slightly differently.
+
+At the top of that file are two lists, `__all__` and `__patches__`.  The
+former replaces entire class implementations, while the latter patches
+the attributes of the override classes into the matching generated class,
+leaving the rest of the generated class untouched.
+
+
+.. _SchemaGen: https://github.com/juju/schemagen
index c6e5c0e..3774056 100644 (file)
@@ -608,6 +608,11 @@ class ClientFacade(Type):
                                                              '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,
@@ -807,7 +812,8 @@ class ClientFacade(Type):
                                             'required': ['config'],
                                             'type': 'object'},
                      'ModelInfo': {'additionalProperties': False,
-                                   'properties': {'cloud-credential-tag': {'type': 'string'},
+                                   'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+                                                  'cloud-credential-tag': {'type': 'string'},
                                                   'cloud-region': {'type': 'string'},
                                                   'cloud-tag': {'type': 'string'},
                                                   'controller-uuid': {'type': 'string'},
@@ -827,15 +833,13 @@ class ClientFacade(Type):
                                    'required': ['name',
                                                 'uuid',
                                                 'controller-uuid',
-                                                'provider-type',
-                                                'default-series',
                                                 'cloud-tag',
                                                 'owner-tag',
                                                 'life',
-                                                'status',
                                                 'users',
                                                 'machines',
-                                                'sla'],
+                                                'sla',
+                                                'agent-version'],
                                    'type': 'object'},
                      'ModelMachineInfo': {'additionalProperties': False,
                                           'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'},
@@ -1149,6 +1153,8 @@ class ClientFacade(Type):
                                       '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'},
@@ -1319,6 +1325,21 @@ class ClientFacade(Type):
 
 
 
+    @ReturnMapping(BytesResult)
+    async def CACert(self):
+        '''
+
+        Returns -> typing.Sequence<+T_co>[int]
+        '''
+        # map input types to rpc msg
+        _params = dict()
+        msg = dict(type='Client', request='CACert', version=1, params=_params)
+
+        reply = await self.rpc(msg)
+        return reply
+
+
+
     @ReturnMapping(None)
     async def DestroyMachines(self, force, machine_names):
         '''
@@ -1438,7 +1459,7 @@ class ClientFacade(Type):
     async def ModelInfo(self):
         '''
 
-        Returns -> typing.Union[_ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
+        Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
         '''
         # map input types to rpc msg
         _params = dict()
@@ -3922,14 +3943,9 @@ class MigrationMasterFacade(Type):
                                                          'controller-agent-version'],
                                             'type': 'object'},
                      'MigrationSpec': {'additionalProperties': False,
-                                       'properties': {'external-control': {'type': 'boolean'},
-                                                      'model-tag': {'type': 'string'},
-                                                      'skip-initial-prechecks': {'type': 'boolean'},
+                                       'properties': {'model-tag': {'type': 'string'},
                                                       'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}},
-                                       'required': ['model-tag',
-                                                    'target-info',
-                                                    'external-control',
-                                                    'skip-initial-prechecks'],
+                                       'required': ['model-tag', 'target-info'],
                                        'type': 'object'},
                      'MigrationTargetInfo': {'additionalProperties': False,
                                              'properties': {'addrs': {'items': {'type': 'string'},
@@ -4281,7 +4297,6 @@ class MigrationStatusWatcherFacade(Type):
     version = 1
     schema =     {'definitions': {'MigrationStatus': {'additionalProperties': False,
                                          'properties': {'attempt': {'type': 'integer'},
-                                                        'external-control': {'type': 'boolean'},
                                                         'migration-id': {'type': 'string'},
                                                         'phase': {'type': 'string'},
                                                         'source-api-addrs': {'items': {'type': 'string'},
@@ -4293,7 +4308,6 @@ class MigrationStatusWatcherFacade(Type):
                                          'required': ['migration-id',
                                                       'attempt',
                                                       'phase',
-                                                      'external-control',
                                                       'source-api-addrs',
                                                       'source-ca-cert',
                                                       'target-api-addrs',
@@ -4344,6 +4358,11 @@ class MigrationTargetFacade(Type):
                                             'required': ['model-tag',
                                                          'source-controller-version'],
                                             'type': 'object'},
+                     'BytesResult': {'additionalProperties': False,
+                                     'properties': {'result': {'items': {'type': 'integer'},
+                                                               'type': 'array'}},
+                                     'required': ['result'],
+                                     'type': 'object'},
                      'MigrationModelInfo': {'additionalProperties': False,
                                             'properties': {'agent-version': {'$ref': '#/definitions/Number'},
                                                            'controller-agent-version': {'$ref': '#/definitions/Number'},
@@ -4430,6 +4449,8 @@ class MigrationTargetFacade(Type):
                                  'type': 'object'},
                     'AdoptResources': {'properties': {'Params': {'$ref': '#/definitions/AdoptResourcesArgs'}},
                                        'type': 'object'},
+                    'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}},
+                               'type': 'object'},
                     'Import': {'properties': {'Params': {'$ref': '#/definitions/SerializedModel'}},
                                'type': 'object'},
                     'LatestLogTime': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'},
@@ -4488,6 +4509,21 @@ class MigrationTargetFacade(Type):
 
 
 
+    @ReturnMapping(BytesResult)
+    async def CACert(self):
+        '''
+
+        Returns -> typing.Sequence<+T_co>[int]
+        '''
+        # map input types to rpc msg
+        _params = dict()
+        msg = dict(type='MigrationTarget', request='CACert', version=1, params=_params)
+
+        reply = await self.rpc(msg)
+        return reply
+
+
+
     @ReturnMapping(None)
     async def Import(self, bytes_, charms, tools):
         '''
index c6035af..283e803 100644 (file)
@@ -1903,6 +1903,7 @@ class DiscoverSpacesFacade(Type):
                                                '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'},
@@ -2025,12 +2026,14 @@ class DiskManagerFacade(Type):
                                                     'Label': {'type': 'string'},
                                                     'MountPoint': {'type': 'string'},
                                                     'Size': {'type': 'integer'},
-                                                    'UUID': {'type': 'string'}},
+                                                    'UUID': {'type': 'string'},
+                                                    'WWN': {'type': 'string'}},
                                      'required': ['DeviceName',
                                                   'DeviceLinks',
                                                   'Label',
                                                   'UUID',
                                                   'HardwareId',
+                                                  'WWN',
                                                   'BusAddress',
                                                   'Size',
                                                   'FilesystemType',
@@ -3160,7 +3163,8 @@ class ModelManagerFacade(Type):
                                              'required': ['config'],
                                              'type': 'object'},
                      'ModelInfo': {'additionalProperties': False,
-                                   'properties': {'cloud-credential-tag': {'type': 'string'},
+                                   'properties': {'agent-version': {'$ref': '#/definitions/Number'},
+                                                  'cloud-credential-tag': {'type': 'string'},
                                                   'cloud-region': {'type': 'string'},
                                                   'cloud-tag': {'type': 'string'},
                                                   'controller-uuid': {'type': 'string'},
@@ -3180,15 +3184,13 @@ class ModelManagerFacade(Type):
                                    'required': ['name',
                                                 'uuid',
                                                 'controller-uuid',
-                                                'provider-type',
-                                                'default-series',
                                                 'cloud-tag',
                                                 'owner-tag',
                                                 'life',
-                                                'status',
                                                 'users',
                                                 'machines',
-                                                'sla'],
+                                                'sla',
+                                                'agent-version'],
                                    'type': 'object'},
                      'ModelInfoResult': {'additionalProperties': False,
                                          'properties': {'error': {'$ref': '#/definitions/Error'},
@@ -3273,6 +3275,18 @@ class ModelManagerFacade(Type):
                                                                              '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,
@@ -3344,7 +3358,7 @@ class ModelManagerFacade(Type):
         name : str
         owner_tag : str
         region : str
-        Returns -> typing.Union[_ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
+        Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>]
         '''
         # map input types to rpc msg
         _params = dict()
@@ -3852,6 +3866,7 @@ class SpacesFacade(Type):
                                                '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'},
@@ -4045,6 +4060,7 @@ class SubnetsFacade(Type):
                                                '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'},
index c4a76db..83375f0 100644 (file)
@@ -729,14 +729,9 @@ class ControllerFacade(Type):
                                                                  'type': 'array'}},
                                          'type': 'object'},
                      'MigrationSpec': {'additionalProperties': False,
-                                       'properties': {'external-control': {'type': 'boolean'},
-                                                      'model-tag': {'type': 'string'},
-                                                      'skip-initial-prechecks': {'type': 'boolean'},
+                                       'properties': {'model-tag': {'type': 'string'},
                                                       'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}},
-                                       'required': ['model-tag',
-                                                    'target-info',
-                                                    'external-control',
-                                                    'skip-initial-prechecks'],
+                                       'required': ['model-tag', 'target-info'],
                                        'type': 'object'},
                      'MigrationTargetInfo': {'additionalProperties': False,
                                              'properties': {'addrs': {'items': {'type': 'string'},
@@ -2450,11 +2445,16 @@ class ProvisionerFacade(Type):
                                    'required': ['entities'],
                                    'type': 'object'},
                      'Settings': {'additionalProperties': False,
-                                  'properties': {'Ftp': {'type': 'string'},
+                                  'properties': {'AutoNoProxy': {'type': 'string'},
+                                                 'Ftp': {'type': 'string'},
                                                  'Http': {'type': 'string'},
                                                  'Https': {'type': 'string'},
                                                  'NoProxy': {'type': 'string'}},
-                                  'required': ['Http', 'Https', 'Ftp', 'NoProxy'],
+                                  'required': ['Http',
+                                               'Https',
+                                               'Ftp',
+                                               'NoProxy',
+                                               'AutoNoProxy'],
                                   'type': 'object'},
                      'StatusResult': {'additionalProperties': False,
                                       'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True,
@@ -2573,7 +2573,8 @@ class ProvisionerFacade(Type):
                                                    'persistent': {'type': 'boolean'},
                                                    'pool': {'type': 'string'},
                                                    'size': {'type': 'integer'},
-                                                   'volume-id': {'type': 'string'}},
+                                                   'volume-id': {'type': 'string'},
+                                                   'wwn': {'type': 'string'}},
                                     'required': ['volume-id', 'size', 'persistent'],
                                     'type': 'object'},
                      'VolumeParams': {'additionalProperties': False,
@@ -3590,7 +3591,8 @@ class StorageFacade(Type):
                                                    'persistent': {'type': 'boolean'},
                                                    'pool': {'type': 'string'},
                                                    'size': {'type': 'integer'},
-                                                   'volume-id': {'type': 'string'}},
+                                                   'volume-id': {'type': 'string'},
+                                                   'wwn': {'type': 'string'}},
                                     'required': ['volume-id', 'size', 'persistent'],
                                     'type': 'object'}},
      'properties': {'AddToUnit': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'},
@@ -3793,12 +3795,14 @@ class StorageProvisionerFacade(Type):
                                                     'Label': {'type': 'string'},
                                                     'MountPoint': {'type': 'string'},
                                                     'Size': {'type': 'integer'},
-                                                    'UUID': {'type': 'string'}},
+                                                    'UUID': {'type': 'string'},
+                                                    'WWN': {'type': 'string'}},
                                      'required': ['DeviceName',
                                                   'DeviceLinks',
                                                   'Label',
                                                   'UUID',
                                                   'HardwareId',
+                                                  'WWN',
                                                   'BusAddress',
                                                   'Size',
                                                   'FilesystemType',
@@ -4082,7 +4086,8 @@ class StorageProvisionerFacade(Type):
                                                    'persistent': {'type': 'boolean'},
                                                    'pool': {'type': 'string'},
                                                    'size': {'type': 'integer'},
-                                                   'volume-id': {'type': 'string'}},
+                                                   'volume-id': {'type': 'string'},
+                                                   'wwn': {'type': 'string'}},
                                     'required': ['volume-id', 'size', 'persistent'],
                                     'type': 'object'},
                      'VolumeParams': {'additionalProperties': False,
index ebc6688..e68f3f6 100644 (file)
@@ -231,6 +231,11 @@ class UniterFacade(Type):
                                                                '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'}},
@@ -325,54 +330,32 @@ class UniterFacade(Type):
                                                     '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'},
+                     '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'}},
@@ -617,31 +600,10 @@ class UniterFacade(Type):
                                                                         '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'}},
+                                      'type': 'object'}},
      'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}},
                                      'type': 'object'},
                     'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}},
@@ -735,9 +697,9 @@ class UniterFacade(Type):
                                     'type': 'object'},
                     'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}},
                                   'type': 'object'},
-                    'NetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/UnitsNetworkConfig'},
-                                                     'Result': {'$ref': '#/definitions/UnitNetworkConfigResults'}},
-                                      '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'},
@@ -816,9 +778,6 @@ class UniterFacade(Type):
                     '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'},
@@ -839,6 +798,9 @@ class UniterFacade(Type):
                     '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'},
@@ -1343,16 +1305,18 @@ class UniterFacade(Type):
 
 
 
-    @ReturnMapping(UnitNetworkConfigResults)
-    async def NetworkConfig(self, args):
+    @ReturnMapping(NetworkInfoResults)
+    async def NetworkInfo(self, bindings, unit):
         '''
-        args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig>
-        Returns -> typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult>
+        bindings : typing.Sequence<+T_co>[str]
+        unit : str
+        Returns -> typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult>
         '''
         # map input types to rpc msg
         _params = dict()
-        msg = dict(type='Uniter', request='NetworkConfig', version=5, params=_params)
-        _params['args'] = args
+        msg = dict(type='Uniter', request='NetworkInfo', version=5, params=_params)
+        _params['bindings'] = bindings
+        _params['unit'] = unit
         reply = await self.rpc(msg)
         return reply
 
@@ -1763,21 +1727,6 @@ class UniterFacade(Type):
 
 
 
-    @ReturnMapping(StringsWatchResults)
-    async def WatchApplicationRelations(self, entities):
-        '''
-        entities : typing.Sequence<+T_co>[~Entity]<~Entity>
-        Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
-        '''
-        # map input types to rpc msg
-        _params = dict()
-        msg = dict(type='Uniter', request='WatchApplicationRelations', version=5, params=_params)
-        _params['entities'] = entities
-        reply = await self.rpc(msg)
-        return reply
-
-
-
     @ReturnMapping(NotifyWatchResults)
     async def WatchConfigSettings(self, entities):
         '''
@@ -1883,6 +1832,21 @@ class UniterFacade(Type):
 
 
 
+    @ReturnMapping(StringsWatchResults)
+    async def WatchUnitRelations(self, entities):
+        '''
+        entities : typing.Sequence<+T_co>[~Entity]<~Entity>
+        Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
+        '''
+        # map input types to rpc msg
+        _params = dict()
+        msg = dict(type='Uniter', request='WatchUnitRelations', version=5, params=_params)
+        _params['entities'] = entities
+        reply = await self.rpc(msg)
+        return reply
+
+
+
     @ReturnMapping(StringsWatchResults)
     async def WatchUnitStorageAttachments(self, entities):
         '''
index e4f2130..c932a2f 100644 (file)
@@ -7,7 +7,7 @@ from juju.client.facade import Type, ReturnMapping
 class APIHostPortsResult(Type):
     _toSchema = {'servers': 'servers'}
     _toPy = {'servers': 'servers'}
-    def __init__(self, servers=None):
+    def __init__(self, servers=None, **unknown_fields):
         '''
         servers : typing.Sequence<+T_co>[~HostPort]<~HostPort>
         '''
@@ -18,7 +18,7 @@ class APIHostPortsResult(Type):
 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):
+    def __init__(self, name=None, parameters=None, receiver=None, tag=None, **unknown_fields):
         '''
         name : str
         parameters : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -35,7 +35,7 @@ class Action(Type):
 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):
+    def __init__(self, action_tag=None, message=None, results=None, status=None, **unknown_fields):
         '''
         action_tag : str
         message : str
@@ -52,7 +52,7 @@ class ActionExecutionResult(Type):
 class ActionExecutionResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult>
         '''
@@ -63,7 +63,7 @@ class ActionExecutionResults(Type):
 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):
+    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
@@ -88,7 +88,7 @@ class ActionResult(Type):
 class ActionResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
         '''
@@ -99,7 +99,7 @@ class ActionResults(Type):
 class ActionSpec(Type):
     _toSchema = {'description': 'description', 'params': 'params'}
     _toPy = {'description': 'description', 'params': 'params'}
-    def __init__(self, description=None, params=None):
+    def __init__(self, description=None, params=None, **unknown_fields):
         '''
         description : str
         params : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -112,7 +112,7 @@ class ActionSpec(Type):
 class Actions(Type):
     _toSchema = {'actions': 'actions'}
     _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
+    def __init__(self, actions=None, **unknown_fields):
         '''
         actions : typing.Sequence<+T_co>[~Action]<~Action>
         '''
@@ -123,7 +123,7 @@ class Actions(Type):
 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):
+    def __init__(self, actions=None, error=None, name=None, **unknown_fields):
         '''
         actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
         error : Error
@@ -138,7 +138,7 @@ class ActionsByName(Type):
 class ActionsByNames(Type):
     _toSchema = {'actions': 'actions'}
     _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
+    def __init__(self, actions=None, **unknown_fields):
         '''
         actions : typing.Sequence<+T_co>[~ActionsByName]<~ActionsByName>
         '''
@@ -149,7 +149,7 @@ class ActionsByNames(Type):
 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):
+    def __init__(self, actions=None, error=None, receiver=None, **unknown_fields):
         '''
         actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult>
         error : Error
@@ -164,7 +164,7 @@ class ActionsByReceiver(Type):
 class ActionsByReceivers(Type):
     _toSchema = {'actions': 'actions'}
     _toPy = {'actions': 'actions'}
-    def __init__(self, actions=None):
+    def __init__(self, actions=None, **unknown_fields):
         '''
         actions : typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver>
         '''
@@ -175,7 +175,7 @@ class ActionsByReceivers(Type):
 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):
+    def __init__(self, application=None, num_units=None, placement=None, **unknown_fields):
         '''
         application : str
         num_units : int
@@ -190,7 +190,7 @@ class AddApplicationUnits(Type):
 class AddApplicationUnitsResults(Type):
     _toSchema = {'units': 'units'}
     _toPy = {'units': 'units'}
-    def __init__(self, units=None):
+    def __init__(self, units=None, **unknown_fields):
         '''
         units : typing.Sequence<+T_co>[str]
         '''
@@ -201,7 +201,7 @@ class AddApplicationUnitsResults(Type):
 class AddCharm(Type):
     _toSchema = {'channel': 'channel', 'url': 'url'}
     _toPy = {'channel': 'channel', 'url': 'url'}
-    def __init__(self, channel=None, url=None):
+    def __init__(self, channel=None, url=None, **unknown_fields):
         '''
         channel : str
         url : str
@@ -214,7 +214,7 @@ class AddCharm(Type):
 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):
+    def __init__(self, channel=None, macaroon=None, url=None, **unknown_fields):
         '''
         channel : str
         macaroon : Macaroon
@@ -229,7 +229,7 @@ class AddCharmWithAuthorization(Type):
 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):
+    def __init__(self, addresses=None, constraints=None, container_type=None, disks=None, hardware_characteristics=None, instance_id=None, jobs=None, nonce=None, parent_id=None, placement=None, series=None, **unknown_fields):
         '''
         addresses : typing.Sequence<+T_co>[~Address]<~Address>
         constraints : Value
@@ -260,7 +260,7 @@ class AddMachineParams(Type):
 class AddMachines(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams>
         '''
@@ -271,7 +271,7 @@ class AddMachines(Type):
 class AddMachinesResult(Type):
     _toSchema = {'error': 'error', 'machine': 'machine'}
     _toPy = {'error': 'error', 'machine': 'machine'}
-    def __init__(self, error=None, machine=None):
+    def __init__(self, error=None, machine=None, **unknown_fields):
         '''
         error : Error
         machine : str
@@ -284,7 +284,7 @@ class AddMachinesResult(Type):
 class AddMachinesResults(Type):
     _toSchema = {'machines': 'machines'}
     _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
+    def __init__(self, machines=None, **unknown_fields):
         '''
         machines : typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult>
         '''
@@ -295,7 +295,7 @@ class AddMachinesResults(Type):
 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):
+    def __init__(self, addcharmwithauthorization=None, entity=None, resources=None, **unknown_fields):
         '''
         addcharmwithauthorization : AddCharmWithAuthorization
         entity : Entity
@@ -310,7 +310,7 @@ class AddPendingResourcesArgs(Type):
 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):
+    def __init__(self, errorresult=None, pending_ids=None, **unknown_fields):
         '''
         errorresult : ErrorResult
         pending_ids : typing.Sequence<+T_co>[str]
@@ -323,7 +323,7 @@ class AddPendingResourcesResult(Type):
 class AddRelation(Type):
     _toSchema = {'endpoints': 'endpoints'}
     _toPy = {'endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
+    def __init__(self, endpoints=None, **unknown_fields):
         '''
         endpoints : typing.Sequence<+T_co>[str]
         '''
@@ -334,7 +334,7 @@ class AddRelation(Type):
 class AddRelationResults(Type):
     _toSchema = {'endpoints': 'endpoints'}
     _toPy = {'endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
+    def __init__(self, endpoints=None, **unknown_fields):
         '''
         endpoints : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation>
         '''
@@ -345,7 +345,7 @@ class AddRelationResults(Type):
 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):
+    def __init__(self, space_tag=None, subnet_provider_id=None, subnet_tag=None, zones=None, **unknown_fields):
         '''
         space_tag : str
         subnet_provider_id : str
@@ -362,7 +362,7 @@ class AddSubnetParams(Type):
 class AddSubnetsParams(Type):
     _toSchema = {'subnets': 'subnets'}
     _toPy = {'subnets': 'subnets'}
-    def __init__(self, subnets=None):
+    def __init__(self, subnets=None, **unknown_fields):
         '''
         subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams>
         '''
@@ -373,7 +373,7 @@ class AddSubnetsParams(Type):
 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):
+    def __init__(self, display_name=None, password=None, username=None, **unknown_fields):
         '''
         display_name : str
         password : str
@@ -388,7 +388,7 @@ class AddUser(Type):
 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):
+    def __init__(self, error=None, secret_key=None, tag=None, **unknown_fields):
         '''
         error : Error
         secret_key : typing.Sequence<+T_co>[int]
@@ -403,7 +403,7 @@ class AddUserResult(Type):
 class AddUserResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~AddUserResult]<~AddUserResult>
         '''
@@ -414,7 +414,7 @@ class AddUserResults(Type):
 class AddUsers(Type):
     _toSchema = {'users': 'users'}
     _toPy = {'users': 'users'}
-    def __init__(self, users=None):
+    def __init__(self, users=None, **unknown_fields):
         '''
         users : typing.Sequence<+T_co>[~AddUser]<~AddUser>
         '''
@@ -425,7 +425,7 @@ class AddUsers(Type):
 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):
+    def __init__(self, scope=None, space_name=None, type_=None, value=None, **unknown_fields):
         '''
         scope : str
         space_name : str
@@ -442,7 +442,7 @@ class Address(Type):
 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):
+    def __init__(self, model_tag=None, source_controller_version=None, **unknown_fields):
         '''
         model_tag : str
         source_controller_version : Number
@@ -455,7 +455,7 @@ class AdoptResourcesArgs(Type):
 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):
+    def __init__(self, container_type=None, error=None, jobs=None, life=None, **unknown_fields):
         '''
         container_type : str
         error : Error
@@ -472,7 +472,7 @@ class AgentGetEntitiesResult(Type):
 class AgentGetEntitiesResults(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~AgentGetEntitiesResult]<~AgentGetEntitiesResult>
         '''
@@ -483,7 +483,7 @@ class AgentGetEntitiesResults(Type):
 class AgentVersionResult(Type):
     _toSchema = {'version': 'version'}
     _toPy = {'version': 'version'}
-    def __init__(self, version=None):
+    def __init__(self, version=None, **unknown_fields):
         '''
         version : Number
         '''
@@ -494,7 +494,7 @@ class AgentVersionResult(Type):
 class AllWatcherId(Type):
     _toSchema = {'watcher_id': 'watcher-id'}
     _toPy = {'watcher-id': 'watcher_id'}
-    def __init__(self, watcher_id=None):
+    def __init__(self, watcher_id=None, **unknown_fields):
         '''
         watcher_id : str
         '''
@@ -505,7 +505,7 @@ class AllWatcherId(Type):
 class AllWatcherNextResults(Type):
     _toSchema = {'deltas': 'deltas'}
     _toPy = {'deltas': 'deltas'}
-    def __init__(self, deltas=None):
+    def __init__(self, deltas=None, **unknown_fields):
         '''
         deltas : typing.Sequence<+T_co>[~Delta]<~Delta>
         '''
@@ -516,7 +516,7 @@ class AllWatcherNextResults(Type):
 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):
+    def __init__(self, annotations=None, entity=None, error=None, **unknown_fields):
         '''
         annotations : typing.Mapping<~KT, +VT_co>[str, str]
         entity : str
@@ -531,7 +531,7 @@ class AnnotationsGetResult(Type):
 class AnnotationsGetResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~AnnotationsGetResult]<~AnnotationsGetResult>
         '''
@@ -542,7 +542,7 @@ class AnnotationsGetResults(Type):
 class AnnotationsSet(Type):
     _toSchema = {'annotations': 'annotations'}
     _toPy = {'annotations': 'annotations'}
-    def __init__(self, annotations=None):
+    def __init__(self, annotations=None, **unknown_fields):
         '''
         annotations : typing.Sequence<+T_co>[~EntityAnnotations]<~EntityAnnotations>
         '''
@@ -553,7 +553,7 @@ class AnnotationsSet(Type):
 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):
+    def __init__(self, actions=None, application_tag=None, error=None, **unknown_fields):
         '''
         actions : typing.Mapping<~KT, +VT_co>[str, ~ActionSpec]<~ActionSpec>
         application_tag : str
@@ -568,7 +568,7 @@ class ApplicationCharmActionsResult(Type):
 class ApplicationCharmRelations(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -579,7 +579,7 @@ class ApplicationCharmRelations(Type):
 class ApplicationCharmRelationsResults(Type):
     _toSchema = {'charm_relations': 'charm-relations'}
     _toPy = {'charm-relations': 'charm_relations'}
-    def __init__(self, charm_relations=None):
+    def __init__(self, charm_relations=None, **unknown_fields):
         '''
         charm_relations : typing.Sequence<+T_co>[str]
         '''
@@ -590,7 +590,7 @@ class ApplicationCharmRelationsResults(Type):
 class ApplicationDeploy(Type):
     _toSchema = {'application': 'application', 'channel': 'channel', 'charm_url': 'charm-url', 'config': 'config', 'config_yaml': 'config-yaml', 'constraints': 'constraints', 'endpoint_bindings': 'endpoint-bindings', 'num_units': 'num-units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
     _toPy = {'application': 'application', 'channel': 'channel', 'charm-url': 'charm_url', 'config': 'config', 'config-yaml': 'config_yaml', 'constraints': 'constraints', 'endpoint-bindings': 'endpoint_bindings', 'num-units': 'num_units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'}
-    def __init__(self, application=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, endpoint_bindings=None, num_units=None, placement=None, resources=None, series=None, storage=None):
+    def __init__(self, application=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, endpoint_bindings=None, num_units=None, placement=None, resources=None, series=None, storage=None, **unknown_fields):
         '''
         application : str
         channel : str
@@ -623,7 +623,7 @@ class ApplicationDeploy(Type):
 class ApplicationDestroy(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -634,7 +634,7 @@ class ApplicationDestroy(Type):
 class ApplicationExpose(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -645,7 +645,7 @@ class ApplicationExpose(Type):
 class ApplicationGet(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -656,7 +656,7 @@ class ApplicationGet(Type):
 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):
+    def __init__(self, application=None, charm=None, config=None, constraints=None, series=None, **unknown_fields):
         '''
         application : str
         charm : str
@@ -675,7 +675,7 @@ class ApplicationGetResults(Type):
 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):
+    def __init__(self, application=None, metrics_credentials=None, **unknown_fields):
         '''
         application : str
         metrics_credentials : typing.Sequence<+T_co>[int]
@@ -688,7 +688,7 @@ class ApplicationMetricCredential(Type):
 class ApplicationMetricCredentials(Type):
     _toSchema = {'creds': 'creds'}
     _toPy = {'creds': 'creds'}
-    def __init__(self, creds=None):
+    def __init__(self, creds=None, **unknown_fields):
         '''
         creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential>
         '''
@@ -699,7 +699,7 @@ class ApplicationMetricCredentials(Type):
 class ApplicationRelationsChange(Type):
     _toSchema = {'changed': 'changed', 'removed': 'removed'}
     _toPy = {'changed': 'changed', 'removed': 'removed'}
-    def __init__(self, changed=None, removed=None):
+    def __init__(self, changed=None, removed=None, **unknown_fields):
         '''
         changed : typing.Sequence<+T_co>[~RelationChange]<~RelationChange>
         removed : typing.Sequence<+T_co>[int]
@@ -712,7 +712,7 @@ class ApplicationRelationsChange(Type):
 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):
+    def __init__(self, applicationrelationswatcherid=None, changes=None, error=None, **unknown_fields):
         '''
         applicationrelationswatcherid : str
         changes : ApplicationRelationsChange
@@ -727,7 +727,7 @@ class ApplicationRelationsWatchResult(Type):
 class ApplicationSet(Type):
     _toSchema = {'application': 'application', 'options': 'options'}
     _toPy = {'application': 'application', 'options': 'options'}
-    def __init__(self, application=None, options=None):
+    def __init__(self, application=None, options=None, **unknown_fields):
         '''
         application : str
         options : typing.Mapping<~KT, +VT_co>[str, str]
@@ -740,7 +740,7 @@ class ApplicationSet(Type):
 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):
+    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
@@ -767,7 +767,7 @@ class ApplicationSetCharm(Type):
 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):
+    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
@@ -800,7 +800,7 @@ class ApplicationStatus(Type):
 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):
+    def __init__(self, application=None, error=None, units=None, **unknown_fields):
         '''
         application : StatusResult
         error : Error
@@ -815,7 +815,7 @@ class ApplicationStatusResult(Type):
 class ApplicationStatusResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult>
         '''
@@ -826,7 +826,7 @@ class ApplicationStatusResults(Type):
 class ApplicationTag(Type):
     _toSchema = {'name': 'Name'}
     _toPy = {'Name': 'name'}
-    def __init__(self, name=None):
+    def __init__(self, name=None, **unknown_fields):
         '''
         name : str
         '''
@@ -837,7 +837,7 @@ class ApplicationTag(Type):
 class ApplicationURLs(Type):
     _toSchema = {'application_urls': 'application-urls'}
     _toPy = {'application-urls': 'application_urls'}
-    def __init__(self, application_urls=None):
+    def __init__(self, application_urls=None, **unknown_fields):
         '''
         application_urls : typing.Sequence<+T_co>[str]
         '''
@@ -848,7 +848,7 @@ class ApplicationURLs(Type):
 class ApplicationUnexpose(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -859,7 +859,7 @@ class ApplicationUnexpose(Type):
 class ApplicationUnset(Type):
     _toSchema = {'application': 'application', 'options': 'options'}
     _toPy = {'application': 'application', 'options': 'options'}
-    def __init__(self, application=None, options=None):
+    def __init__(self, application=None, options=None, **unknown_fields):
         '''
         application : str
         options : typing.Sequence<+T_co>[str]
@@ -872,7 +872,7 @@ class ApplicationUnset(Type):
 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):
+    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
@@ -897,7 +897,7 @@ class ApplicationUpdate(Type):
 class ApplicationsCharmActionsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ApplicationCharmActionsResult]<~ApplicationCharmActionsResult>
         '''
@@ -908,7 +908,7 @@ class ApplicationsCharmActionsResults(Type):
 class ApplicationsDeploy(Type):
     _toSchema = {'applications': 'applications'}
     _toPy = {'applications': 'applications'}
-    def __init__(self, applications=None):
+    def __init__(self, applications=None, **unknown_fields):
         '''
         applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy>
         '''
@@ -919,7 +919,7 @@ class ApplicationsDeploy(Type):
 class BackupsCreateArgs(Type):
     _toSchema = {'notes': 'notes'}
     _toPy = {'notes': 'notes'}
-    def __init__(self, notes=None):
+    def __init__(self, notes=None, **unknown_fields):
         '''
         notes : str
         '''
@@ -930,7 +930,7 @@ class BackupsCreateArgs(Type):
 class BackupsInfoArgs(Type):
     _toSchema = {'id_': 'id'}
     _toPy = {'id': 'id_'}
-    def __init__(self, id_=None):
+    def __init__(self, id_=None, **unknown_fields):
         '''
         id_ : str
         '''
@@ -941,7 +941,7 @@ class BackupsInfoArgs(Type):
 class BackupsListArgs(Type):
     _toSchema = {}
     _toPy = {}
-    def __init__(self):
+    def __init__(self, **unknown_fields):
         '''
 
         '''
@@ -952,7 +952,7 @@ class BackupsListArgs(Type):
 class BackupsListResult(Type):
     _toSchema = {'list_': 'list'}
     _toPy = {'list': 'list_'}
-    def __init__(self, list_=None):
+    def __init__(self, list_=None, **unknown_fields):
         '''
         list_ : typing.Sequence<+T_co>[~BackupsMetadataResult]<~BackupsMetadataResult>
         '''
@@ -963,7 +963,7 @@ class BackupsListResult(Type):
 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):
+    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
@@ -1002,7 +1002,7 @@ class BackupsMetadataResult(Type):
 class BackupsRemoveArgs(Type):
     _toSchema = {'id_': 'id'}
     _toPy = {'id': 'id_'}
-    def __init__(self, id_=None):
+    def __init__(self, id_=None, **unknown_fields):
         '''
         id_ : str
         '''
@@ -1013,7 +1013,7 @@ class BackupsRemoveArgs(Type):
 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):
+    def __init__(self, arch=None, number=None, series=None, **unknown_fields):
         '''
         arch : str
         number : Number
@@ -1028,7 +1028,7 @@ class Binary(Type):
 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):
+    def __init__(self, id_=None, message=None, tag=None, type_=None, **unknown_fields):
         '''
         id_ : str
         message : str
@@ -1045,7 +1045,7 @@ class Block(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):
+    def __init__(self, busaddress=None, devicelinks=None, devicename=None, filesystemtype=None, hardwareid=None, inuse=None, label=None, mountpoint=None, size=None, uuid=None, **unknown_fields):
         '''
         busaddress : str
         devicelinks : typing.Sequence<+T_co>[str]
@@ -1074,7 +1074,7 @@ class BlockDevice(Type):
 class BlockDeviceResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : BlockDevice
@@ -1087,7 +1087,7 @@ class BlockDeviceResult(Type):
 class BlockDeviceResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~BlockDeviceResult]<~BlockDeviceResult>
         '''
@@ -1098,7 +1098,7 @@ class BlockDeviceResults(Type):
 class BlockResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : Block
@@ -1111,7 +1111,7 @@ class BlockResult(Type):
 class BlockResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~BlockResult]<~BlockResult>
         '''
@@ -1122,7 +1122,7 @@ class BlockResults(Type):
 class BlockSwitchParams(Type):
     _toSchema = {'message': 'message', 'type_': 'type'}
     _toPy = {'message': 'message', 'type': 'type_'}
-    def __init__(self, message=None, type_=None):
+    def __init__(self, message=None, type_=None, **unknown_fields):
         '''
         message : str
         type_ : str
@@ -1135,7 +1135,7 @@ class BlockSwitchParams(Type):
 class BoolResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : bool
@@ -1148,7 +1148,7 @@ class BoolResult(Type):
 class BoolResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~BoolResult]<~BoolResult>
         '''
@@ -1159,7 +1159,7 @@ class BoolResults(Type):
 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):
+    def __init__(self, args=None, id_=None, method=None, requires=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[typing.Any]
         id_ : str
@@ -1176,7 +1176,7 @@ class BundleChange(Type):
 class BundleChangesParams(Type):
     _toSchema = {'yaml': 'yaml'}
     _toPy = {'yaml': 'yaml'}
-    def __init__(self, yaml=None):
+    def __init__(self, yaml=None, **unknown_fields):
         '''
         yaml : str
         '''
@@ -1187,7 +1187,7 @@ class BundleChangesParams(Type):
 class BundleChangesResults(Type):
     _toSchema = {'changes': 'changes', 'errors': 'errors'}
     _toPy = {'changes': 'changes', 'errors': 'errors'}
-    def __init__(self, changes=None, errors=None):
+    def __init__(self, changes=None, errors=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[~BundleChange]<~BundleChange>
         errors : typing.Sequence<+T_co>[str]
@@ -1200,7 +1200,7 @@ class BundleChangesResults(Type):
 class BytesResult(Type):
     _toSchema = {'result': 'result'}
     _toPy = {'result': 'result'}
-    def __init__(self, result=None):
+    def __init__(self, result=None, **unknown_fields):
         '''
         result : typing.Sequence<+T_co>[int]
         '''
@@ -1211,7 +1211,7 @@ class BytesResult(Type):
 class CharmActionSpec(Type):
     _toSchema = {'description': 'description', 'params': 'params'}
     _toPy = {'description': 'description', 'params': 'params'}
-    def __init__(self, description=None, params=None):
+    def __init__(self, description=None, params=None, **unknown_fields):
         '''
         description : str
         params : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -1224,7 +1224,7 @@ class CharmActionSpec(Type):
 class CharmActions(Type):
     _toSchema = {'specs': 'specs'}
     _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None):
+    def __init__(self, specs=None, **unknown_fields):
         '''
         specs : typing.Mapping<~KT, +VT_co>[str, ~CharmActionSpec]<~CharmActionSpec>
         '''
@@ -1235,7 +1235,7 @@ class CharmActions(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):
+    def __init__(self, actions=None, config=None, meta=None, metrics=None, revision=None, url=None, **unknown_fields):
         '''
         actions : CharmActions
         config : typing.Mapping<~KT, +VT_co>[str, ~CharmOption]<~CharmOption>
@@ -1256,7 +1256,7 @@ class CharmInfo(Type):
 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):
+    def __init__(self, categories=None, description=None, extra_bindings=None, min_juju_version=None, name=None, payload_classes=None, peers=None, provides=None, requires=None, resources=None, series=None, storage=None, subordinate=None, summary=None, tags=None, terms=None, **unknown_fields):
         '''
         categories : typing.Sequence<+T_co>[str]
         description : str
@@ -1297,7 +1297,7 @@ class CharmMeta(Type):
 class CharmMetric(Type):
     _toSchema = {'description': 'description', 'type_': 'type'}
     _toPy = {'description': 'description', 'type': 'type_'}
-    def __init__(self, description=None, type_=None):
+    def __init__(self, description=None, type_=None, **unknown_fields):
         '''
         description : str
         type_ : str
@@ -1310,7 +1310,7 @@ class CharmMetric(Type):
 class CharmMetrics(Type):
     _toSchema = {'metrics': 'metrics', 'plan': 'plan'}
     _toPy = {'metrics': 'metrics', 'plan': 'plan'}
-    def __init__(self, metrics=None, plan=None):
+    def __init__(self, metrics=None, plan=None, **unknown_fields):
         '''
         metrics : typing.Mapping<~KT, +VT_co>[str, ~CharmMetric]<~CharmMetric>
         plan : CharmPlan
@@ -1323,7 +1323,7 @@ class CharmMetrics(Type):
 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):
+    def __init__(self, default=None, description=None, type_=None, **unknown_fields):
         '''
         default : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         description : str
@@ -1338,7 +1338,7 @@ class CharmOption(Type):
 class CharmPayloadClass(Type):
     _toSchema = {'name': 'name', 'type_': 'type'}
     _toPy = {'name': 'name', 'type': 'type_'}
-    def __init__(self, name=None, type_=None):
+    def __init__(self, name=None, type_=None, **unknown_fields):
         '''
         name : str
         type_ : str
@@ -1351,7 +1351,7 @@ class CharmPayloadClass(Type):
 class CharmPlan(Type):
     _toSchema = {'required': 'required'}
     _toPy = {'required': 'required'}
-    def __init__(self, required=None):
+    def __init__(self, required=None, **unknown_fields):
         '''
         required : bool
         '''
@@ -1362,7 +1362,7 @@ class CharmPlan(Type):
 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):
+    def __init__(self, interface=None, limit=None, name=None, optional=None, role=None, scope=None, **unknown_fields):
         '''
         interface : str
         limit : int
@@ -1383,7 +1383,7 @@ class CharmRelation(Type):
 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):
+    def __init__(self, description=None, fingerprint=None, name=None, origin=None, path=None, revision=None, size=None, type_=None, **unknown_fields):
         '''
         description : str
         fingerprint : typing.Sequence<+T_co>[int]
@@ -1408,7 +1408,7 @@ class CharmResource(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):
+    def __init__(self, description=None, name=None, path=None, type_=None, **unknown_fields):
         '''
         description : str
         name : str
@@ -1425,7 +1425,7 @@ class CharmResourceMeta(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):
+    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
@@ -1454,7 +1454,7 @@ class CharmStorage(Type):
 class CharmURL(Type):
     _toSchema = {'url': 'url'}
     _toPy = {'url': 'url'}
-    def __init__(self, url=None):
+    def __init__(self, url=None, **unknown_fields):
         '''
         url : str
         '''
@@ -1465,7 +1465,7 @@ class CharmURL(Type):
 class CharmURLs(Type):
     _toSchema = {'urls': 'urls'}
     _toPy = {'urls': 'urls'}
-    def __init__(self, urls=None):
+    def __init__(self, urls=None, **unknown_fields):
         '''
         urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL>
         '''
@@ -1476,7 +1476,7 @@ class CharmURLs(Type):
 class CharmsList(Type):
     _toSchema = {'names': 'names'}
     _toPy = {'names': 'names'}
-    def __init__(self, names=None):
+    def __init__(self, names=None, **unknown_fields):
         '''
         names : typing.Sequence<+T_co>[str]
         '''
@@ -1487,7 +1487,7 @@ class CharmsList(Type):
 class CharmsListResult(Type):
     _toSchema = {'charm_urls': 'charm-urls'}
     _toPy = {'charm-urls': 'charm_urls'}
-    def __init__(self, charm_urls=None):
+    def __init__(self, charm_urls=None, **unknown_fields):
         '''
         charm_urls : typing.Sequence<+T_co>[str]
         '''
@@ -1498,7 +1498,7 @@ class CharmsListResult(Type):
 class ClaimLeadershipBulkParams(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~ClaimLeadershipParams]<~ClaimLeadershipParams>
         '''
@@ -1509,7 +1509,7 @@ class ClaimLeadershipBulkParams(Type):
 class ClaimLeadershipBulkResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
         '''
@@ -1520,7 +1520,7 @@ class ClaimLeadershipBulkResults(Type):
 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):
+    def __init__(self, application_tag=None, duration=None, unit_tag=None, **unknown_fields):
         '''
         application_tag : str
         duration : float
@@ -1535,7 +1535,7 @@ class ClaimLeadershipParams(Type):
 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):
+    def __init__(self, auth_types=None, endpoint=None, identity_endpoint=None, regions=None, storage_endpoint=None, type_=None, **unknown_fields):
         '''
         auth_types : typing.Sequence<+T_co>[str]
         endpoint : str
@@ -1556,7 +1556,7 @@ class Cloud(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):
+    def __init__(self, attrs=None, auth_type=None, redacted=None, **unknown_fields):
         '''
         attrs : typing.Mapping<~KT, +VT_co>[str, str]
         auth_type : str
@@ -1571,7 +1571,7 @@ class CloudCredential(Type):
 class CloudCredentialResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : CloudCredential
@@ -1584,7 +1584,7 @@ class CloudCredentialResult(Type):
 class CloudCredentialResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~CloudCredentialResult]<~CloudCredentialResult>
         '''
@@ -1595,7 +1595,7 @@ class CloudCredentialResults(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):
+    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
@@ -1626,7 +1626,7 @@ class CloudImageMetadata(Type):
 class CloudImageMetadataList(Type):
     _toSchema = {'metadata': 'metadata'}
     _toPy = {'metadata': 'metadata'}
-    def __init__(self, metadata=None):
+    def __init__(self, metadata=None, **unknown_fields):
         '''
         metadata : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
         '''
@@ -1637,7 +1637,7 @@ class CloudImageMetadataList(Type):
 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):
+    def __init__(self, cloud_tag=None, constraints=None, region=None, **unknown_fields):
         '''
         cloud_tag : str
         constraints : Value
@@ -1652,7 +1652,7 @@ class CloudInstanceTypesConstraint(Type):
 class CloudInstanceTypesConstraints(Type):
     _toSchema = {'constraints': 'constraints'}
     _toPy = {'constraints': 'constraints'}
-    def __init__(self, constraints=None):
+    def __init__(self, constraints=None, **unknown_fields):
         '''
         constraints : typing.Sequence<+T_co>[~CloudInstanceTypesConstraint]<~CloudInstanceTypesConstraint>
         '''
@@ -1663,7 +1663,7 @@ class CloudInstanceTypesConstraints(Type):
 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):
+    def __init__(self, endpoint=None, identity_endpoint=None, name=None, storage_endpoint=None, **unknown_fields):
         '''
         endpoint : str
         identity_endpoint : str
@@ -1680,7 +1680,7 @@ class CloudRegion(Type):
 class CloudResult(Type):
     _toSchema = {'cloud': 'cloud', 'error': 'error'}
     _toPy = {'cloud': 'cloud', 'error': 'error'}
-    def __init__(self, cloud=None, error=None):
+    def __init__(self, cloud=None, error=None, **unknown_fields):
         '''
         cloud : Cloud
         error : Error
@@ -1693,7 +1693,7 @@ class CloudResult(Type):
 class CloudResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~CloudResult]<~CloudResult>
         '''
@@ -1704,7 +1704,7 @@ class CloudResults(Type):
 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):
+    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
@@ -1727,7 +1727,7 @@ class CloudSpec(Type):
 class CloudSpecResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : CloudSpec
@@ -1740,7 +1740,7 @@ class CloudSpecResult(Type):
 class CloudSpecResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult>
         '''
@@ -1751,7 +1751,7 @@ class CloudSpecResults(Type):
 class CloudsResult(Type):
     _toSchema = {'clouds': 'clouds'}
     _toPy = {'clouds': 'clouds'}
-    def __init__(self, clouds=None):
+    def __init__(self, clouds=None, **unknown_fields):
         '''
         clouds : typing.Mapping<~KT, +VT_co>[str, ~Cloud]<~Cloud>
         '''
@@ -1762,7 +1762,7 @@ class CloudsResult(Type):
 class ConfigSettingsResult(Type):
     _toSchema = {'error': 'error', 'settings': 'settings'}
     _toPy = {'error': 'error', 'settings': 'settings'}
-    def __init__(self, error=None, settings=None):
+    def __init__(self, error=None, settings=None, **unknown_fields):
         '''
         error : Error
         settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -1775,7 +1775,7 @@ class ConfigSettingsResult(Type):
 class ConfigSettingsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult>
         '''
@@ -1786,7 +1786,7 @@ class ConfigSettingsResults(Type):
 class ConfigValue(Type):
     _toSchema = {'source': 'source', 'value': 'value'}
     _toPy = {'source': 'source', 'value': 'value'}
-    def __init__(self, source=None, value=None):
+    def __init__(self, source=None, value=None, **unknown_fields):
         '''
         source : str
         value : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -1799,7 +1799,7 @@ class ConfigValue(Type):
 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):
+    def __init__(self, count=None, pool=None, size=None, **unknown_fields):
         '''
         count : int
         pool : str
@@ -1814,7 +1814,7 @@ class Constraints(Type):
 class ConstraintsResult(Type):
     _toSchema = {'constraints': 'constraints', 'error': 'error'}
     _toPy = {'constraints': 'constraints', 'error': 'error'}
-    def __init__(self, constraints=None, error=None):
+    def __init__(self, constraints=None, error=None, **unknown_fields):
         '''
         constraints : Value
         error : Error
@@ -1827,7 +1827,7 @@ class ConstraintsResult(Type):
 class ConstraintsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ConstraintsResult]<~ConstraintsResult>
         '''
@@ -1838,7 +1838,7 @@ class ConstraintsResults(Type):
 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):
+    def __init__(self, application_alias=None, application_url=None, **unknown_fields):
         '''
         application_alias : str
         application_url : str
@@ -1851,7 +1851,7 @@ class ConsumeApplicationArg(Type):
 class ConsumeApplicationArgs(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg>
         '''
@@ -1862,7 +1862,7 @@ class ConsumeApplicationArgs(Type):
 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):
+    def __init__(self, error=None, local_name=None, **unknown_fields):
         '''
         error : Error
         local_name : str
@@ -1875,7 +1875,7 @@ class ConsumeApplicationResult(Type):
 class ConsumeApplicationResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ConsumeApplicationResult]<~ConsumeApplicationResult>
         '''
@@ -1886,7 +1886,7 @@ class ConsumeApplicationResults(Type):
 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):
+    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
@@ -1909,7 +1909,7 @@ class ContainerConfig(Type):
 class ContainerManagerConfig(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, str]
         '''
@@ -1920,7 +1920,7 @@ class ContainerManagerConfig(Type):
 class ContainerManagerConfigParams(Type):
     _toSchema = {'type_': 'type'}
     _toPy = {'type': 'type_'}
-    def __init__(self, type_=None):
+    def __init__(self, type_=None, **unknown_fields):
         '''
         type_ : str
         '''
@@ -1931,7 +1931,7 @@ class ContainerManagerConfigParams(Type):
 class ControllerConfigResult(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         '''
@@ -1942,7 +1942,7 @@ class ControllerConfigResult(Type):
 class ControllersChangeResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : ControllersChanges
@@ -1955,7 +1955,7 @@ class ControllersChangeResult(Type):
 class ControllersChangeResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ControllersChangeResult]<~ControllersChangeResult>
         '''
@@ -1966,7 +1966,7 @@ class ControllersChangeResults(Type):
 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):
+    def __init__(self, added=None, converted=None, demoted=None, maintained=None, promoted=None, removed=None, **unknown_fields):
         '''
         added : typing.Sequence<+T_co>[str]
         converted : typing.Sequence<+T_co>[str]
@@ -1987,7 +1987,7 @@ class ControllersChanges(Type):
 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):
+    def __init__(self, constraints=None, num_controllers=None, placement=None, series=None, **unknown_fields):
         '''
         constraints : Value
         num_controllers : int
@@ -2004,7 +2004,7 @@ class ControllersSpec(Type):
 class ControllersSpecs(Type):
     _toSchema = {'specs': 'specs'}
     _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None):
+    def __init__(self, specs=None, **unknown_fields):
         '''
         specs : typing.Sequence<+T_co>[~ControllersSpec]<~ControllersSpec>
         '''
@@ -2015,7 +2015,7 @@ class ControllersSpecs(Type):
 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):
+    def __init__(self, provider_id=None, public=None, space_tag=None, subnet_tags=None, **unknown_fields):
         '''
         provider_id : str
         public : bool
@@ -2032,7 +2032,7 @@ class CreateSpaceParams(Type):
 class CreateSpacesParams(Type):
     _toSchema = {'spaces': 'spaces'}
     _toPy = {'spaces': 'spaces'}
-    def __init__(self, spaces=None):
+    def __init__(self, spaces=None, **unknown_fields):
         '''
         spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams>
         '''
@@ -2043,7 +2043,7 @@ class CreateSpacesParams(Type):
 class Delta(Type):
     _toSchema = {'entity': 'entity', 'removed': 'removed'}
     _toPy = {'entity': 'entity', 'removed': 'removed'}
-    def __init__(self, entity=None, removed=None):
+    def __init__(self, entity=None, removed=None, **unknown_fields):
         '''
         entity : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         removed : bool
@@ -2056,7 +2056,7 @@ class Delta(Type):
 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):
+    def __init__(self, api_addresses=None, state_addresses=None, **unknown_fields):
         '''
         api_addresses : typing.Sequence<+T_co>[str]
         state_addresses : typing.Sequence<+T_co>[str]
@@ -2069,7 +2069,7 @@ class DeployerConnectionValues(Type):
 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):
+    def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields):
         '''
         destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
         destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity>
@@ -2084,7 +2084,7 @@ class DestroyApplicationInfo(Type):
 class DestroyApplicationResult(Type):
     _toSchema = {'error': 'error', 'info': 'info'}
     _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None):
+    def __init__(self, error=None, info=None, **unknown_fields):
         '''
         error : Error
         info : DestroyApplicationInfo
@@ -2097,7 +2097,7 @@ class DestroyApplicationResult(Type):
 class DestroyApplicationResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult>
         '''
@@ -2108,7 +2108,7 @@ class DestroyApplicationResults(Type):
 class DestroyApplicationUnits(Type):
     _toSchema = {'unit_names': 'unit-names'}
     _toPy = {'unit-names': 'unit_names'}
-    def __init__(self, unit_names=None):
+    def __init__(self, unit_names=None, **unknown_fields):
         '''
         unit_names : typing.Sequence<+T_co>[str]
         '''
@@ -2119,7 +2119,7 @@ class DestroyApplicationUnits(Type):
 class DestroyControllerArgs(Type):
     _toSchema = {'destroy_models': 'destroy-models'}
     _toPy = {'destroy-models': 'destroy_models'}
-    def __init__(self, destroy_models=None):
+    def __init__(self, destroy_models=None, **unknown_fields):
         '''
         destroy_models : bool
         '''
@@ -2130,7 +2130,7 @@ class DestroyControllerArgs(Type):
 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):
+    def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields):
         '''
         destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
         destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity>
@@ -2145,7 +2145,7 @@ class DestroyMachineInfo(Type):
 class DestroyMachineResult(Type):
     _toSchema = {'error': 'error', 'info': 'info'}
     _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None):
+    def __init__(self, error=None, info=None, **unknown_fields):
         '''
         error : Error
         info : DestroyMachineInfo
@@ -2158,7 +2158,7 @@ class DestroyMachineResult(Type):
 class DestroyMachineResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult>
         '''
@@ -2169,7 +2169,7 @@ class DestroyMachineResults(Type):
 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):
+    def __init__(self, force=None, machine_names=None, **unknown_fields):
         '''
         force : bool
         machine_names : typing.Sequence<+T_co>[str]
@@ -2182,7 +2182,7 @@ class DestroyMachines(Type):
 class DestroyRelation(Type):
     _toSchema = {'endpoints': 'endpoints'}
     _toPy = {'endpoints': 'endpoints'}
-    def __init__(self, endpoints=None):
+    def __init__(self, endpoints=None, **unknown_fields):
         '''
         endpoints : typing.Sequence<+T_co>[str]
         '''
@@ -2193,7 +2193,7 @@ class DestroyRelation(Type):
 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):
+    def __init__(self, destroyed_storage=None, detached_storage=None, **unknown_fields):
         '''
         destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
         detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity>
@@ -2206,7 +2206,7 @@ class DestroyUnitInfo(Type):
 class DestroyUnitResult(Type):
     _toSchema = {'error': 'error', 'info': 'info'}
     _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None):
+    def __init__(self, error=None, info=None, **unknown_fields):
         '''
         error : Error
         info : DestroyUnitInfo
@@ -2219,7 +2219,7 @@ class DestroyUnitResult(Type):
 class DestroyUnitResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult>
         '''
@@ -2230,7 +2230,7 @@ class DestroyUnitResults(Type):
 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):
+    def __init__(self, data=None, err=None, info=None, kind=None, life=None, since=None, status=None, version=None, **unknown_fields):
         '''
         data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         err : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -2255,7 +2255,7 @@ class DetailedStatus(Type):
 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):
+    def __init__(self, bridge_name=None, host_device_name=None, **unknown_fields):
         '''
         bridge_name : str
         host_device_name : str
@@ -2268,7 +2268,7 @@ class DeviceBridgeInfo(Type):
 class DiscoverSpacesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ProviderSpace]<~ProviderSpace>
         '''
@@ -2279,7 +2279,7 @@ class DiscoverSpacesResults(Type):
 class DistributionGroupResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Sequence<+T_co>[str]
@@ -2292,7 +2292,7 @@ class DistributionGroupResult(Type):
 class DistributionGroupResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~DistributionGroupResult]<~DistributionGroupResult>
         '''
@@ -2303,7 +2303,7 @@ class DistributionGroupResults(Type):
 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):
+    def __init__(self, application_name=None, relation=None, **unknown_fields):
         '''
         application_name : str
         relation : CharmRelation
@@ -2316,7 +2316,7 @@ class Endpoint(Type):
 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):
+    def __init__(self, application=None, name=None, role=None, subordinate=None, **unknown_fields):
         '''
         application : str
         name : str
@@ -2333,7 +2333,7 @@ class EndpointStatus(Type):
 class Entities(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~Entity]<~Entity>
         '''
@@ -2344,7 +2344,7 @@ class Entities(Type):
 class EntitiesCharmURL(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL>
         '''
@@ -2355,7 +2355,7 @@ class EntitiesCharmURL(Type):
 class EntitiesPortRanges(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange>
         '''
@@ -2366,7 +2366,7 @@ class EntitiesPortRanges(Type):
 class EntitiesResult(Type):
     _toSchema = {'entities': 'entities', 'error': 'error'}
     _toPy = {'entities': 'entities', 'error': 'error'}
-    def __init__(self, entities=None, error=None):
+    def __init__(self, entities=None, error=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~Entity]<~Entity>
         error : Error
@@ -2379,7 +2379,7 @@ class EntitiesResult(Type):
 class EntitiesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~EntitiesResult]<~EntitiesResult>
         '''
@@ -2390,7 +2390,7 @@ class EntitiesResults(Type):
 class EntitiesVersion(Type):
     _toSchema = {'agent_tools': 'agent-tools'}
     _toPy = {'agent-tools': 'agent_tools'}
-    def __init__(self, agent_tools=None):
+    def __init__(self, agent_tools=None, **unknown_fields):
         '''
         agent_tools : typing.Sequence<+T_co>[~EntityVersion]<~EntityVersion>
         '''
@@ -2401,7 +2401,7 @@ class EntitiesVersion(Type):
 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):
+    def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[str]
         error : Error
@@ -2416,7 +2416,7 @@ class EntitiesWatchResult(Type):
 class Entity(Type):
     _toSchema = {'tag': 'tag'}
     _toPy = {'tag': 'tag'}
-    def __init__(self, tag=None):
+    def __init__(self, tag=None, **unknown_fields):
         '''
         tag : str
         '''
@@ -2427,7 +2427,7 @@ class Entity(Type):
 class EntityAnnotations(Type):
     _toSchema = {'annotations': 'annotations', 'entity': 'entity'}
     _toPy = {'annotations': 'annotations', 'entity': 'entity'}
-    def __init__(self, annotations=None, entity=None):
+    def __init__(self, annotations=None, entity=None, **unknown_fields):
         '''
         annotations : typing.Mapping<~KT, +VT_co>[str, str]
         entity : str
@@ -2440,7 +2440,7 @@ class EntityAnnotations(Type):
 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):
+    def __init__(self, charm_url=None, tag=None, **unknown_fields):
         '''
         charm_url : str
         tag : str
@@ -2453,7 +2453,7 @@ class EntityCharmURL(Type):
 class EntityMetrics(Type):
     _toSchema = {'error': 'error', 'metrics': 'metrics'}
     _toPy = {'error': 'error', 'metrics': 'metrics'}
-    def __init__(self, error=None, metrics=None):
+    def __init__(self, error=None, metrics=None, **unknown_fields):
         '''
         error : Error
         metrics : typing.Sequence<+T_co>[~MetricResult]<~MetricResult>
@@ -2466,7 +2466,7 @@ class EntityMetrics(Type):
 class EntityPassword(Type):
     _toSchema = {'password': 'password', 'tag': 'tag'}
     _toPy = {'password': 'password', 'tag': 'tag'}
-    def __init__(self, password=None, tag=None):
+    def __init__(self, password=None, tag=None, **unknown_fields):
         '''
         password : str
         tag : str
@@ -2479,7 +2479,7 @@ class EntityPassword(Type):
 class EntityPasswords(Type):
     _toSchema = {'changes': 'changes'}
     _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None):
+    def __init__(self, changes=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword>
         '''
@@ -2490,7 +2490,7 @@ class EntityPasswords(Type):
 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):
+    def __init__(self, from_port=None, protocol=None, tag=None, to_port=None, **unknown_fields):
         '''
         from_port : int
         protocol : str
@@ -2507,7 +2507,7 @@ class EntityPortRange(Type):
 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):
+    def __init__(self, data=None, info=None, since=None, status=None, **unknown_fields):
         '''
         data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         info : str
@@ -2524,7 +2524,7 @@ class EntityStatus(Type):
 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):
+    def __init__(self, data=None, info=None, status=None, tag=None, **unknown_fields):
         '''
         data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         info : str
@@ -2541,7 +2541,7 @@ class EntityStatusArgs(Type):
 class EntityVersion(Type):
     _toSchema = {'tag': 'tag', 'tools': 'tools'}
     _toPy = {'tag': 'tag', 'tools': 'tools'}
-    def __init__(self, tag=None, tools=None):
+    def __init__(self, tag=None, tools=None, **unknown_fields):
         '''
         tag : str
         tools : Version
@@ -2554,7 +2554,7 @@ class EntityVersion(Type):
 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):
+    def __init__(self, tag=None, workload_version=None, **unknown_fields):
         '''
         tag : str
         workload_version : str
@@ -2567,7 +2567,7 @@ class EntityWorkloadVersion(Type):
 class EntityWorkloadVersions(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion>
         '''
@@ -2578,7 +2578,7 @@ class EntityWorkloadVersions(Type):
 class EnvListArgs(Type):
     _toSchema = {'patterns': 'patterns'}
     _toPy = {'patterns': 'patterns'}
-    def __init__(self, patterns=None):
+    def __init__(self, patterns=None, **unknown_fields):
         '''
         patterns : typing.Sequence<+T_co>[str]
         '''
@@ -2589,7 +2589,7 @@ class EnvListArgs(Type):
 class EnvListResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~Payload]<~Payload>
         '''
@@ -2600,7 +2600,7 @@ class EnvListResults(Type):
 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):
+    def __init__(self, code=None, info=None, message=None, **unknown_fields):
         '''
         code : str
         info : ErrorInfo
@@ -2615,7 +2615,7 @@ class Error(Type):
 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):
+    def __init__(self, macaroon=None, macaroon_path=None, **unknown_fields):
         '''
         macaroon : Macaroon
         macaroon_path : str
@@ -2628,7 +2628,7 @@ class ErrorInfo(Type):
 class ErrorResult(Type):
     _toSchema = {'error': 'error'}
     _toPy = {'error': 'error'}
-    def __init__(self, error=None):
+    def __init__(self, error=None, **unknown_fields):
         '''
         error : Error
         '''
@@ -2639,7 +2639,7 @@ class ErrorResult(Type):
 class ErrorResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult>
         '''
@@ -2650,7 +2650,7 @@ class ErrorResults(Type):
 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):
+    def __init__(self, filesystem_tag=None, info=None, volume_tag=None, **unknown_fields):
         '''
         filesystem_tag : str
         info : FilesystemInfo
@@ -2665,7 +2665,7 @@ class Filesystem(Type):
 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):
+    def __init__(self, filesystem_tag=None, info=None, machine_tag=None, **unknown_fields):
         '''
         filesystem_tag : str
         info : FilesystemAttachmentInfo
@@ -2680,7 +2680,7 @@ class FilesystemAttachment(Type):
 class FilesystemAttachmentDetails(Type):
     _toSchema = {'filesystemattachmentinfo': 'FilesystemAttachmentInfo', 'life': 'life'}
     _toPy = {'FilesystemAttachmentInfo': 'filesystemattachmentinfo', 'life': 'life'}
-    def __init__(self, filesystemattachmentinfo=None, life=None):
+    def __init__(self, filesystemattachmentinfo=None, life=None, **unknown_fields):
         '''
         filesystemattachmentinfo : FilesystemAttachmentInfo
         life : str
@@ -2693,7 +2693,7 @@ class FilesystemAttachmentDetails(Type):
 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):
+    def __init__(self, mount_point=None, read_only=None, **unknown_fields):
         '''
         mount_point : str
         read_only : bool
@@ -2706,7 +2706,7 @@ class FilesystemAttachmentInfo(Type):
 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):
+    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
@@ -2729,7 +2729,7 @@ class FilesystemAttachmentParams(Type):
 class FilesystemAttachmentParamsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : FilesystemAttachmentParams
@@ -2742,7 +2742,7 @@ class FilesystemAttachmentParamsResult(Type):
 class FilesystemAttachmentParamsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~FilesystemAttachmentParamsResult]<~FilesystemAttachmentParamsResult>
         '''
@@ -2753,7 +2753,7 @@ class FilesystemAttachmentParamsResults(Type):
 class FilesystemAttachmentResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : FilesystemAttachment
@@ -2766,7 +2766,7 @@ class FilesystemAttachmentResult(Type):
 class FilesystemAttachmentResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~FilesystemAttachmentResult]<~FilesystemAttachmentResult>
         '''
@@ -2777,7 +2777,7 @@ class FilesystemAttachmentResults(Type):
 class FilesystemAttachments(Type):
     _toSchema = {'filesystem_attachments': 'filesystem-attachments'}
     _toPy = {'filesystem-attachments': 'filesystem_attachments'}
-    def __init__(self, filesystem_attachments=None):
+    def __init__(self, filesystem_attachments=None, **unknown_fields):
         '''
         filesystem_attachments : typing.Sequence<+T_co>[~FilesystemAttachment]<~FilesystemAttachment>
         '''
@@ -2788,7 +2788,7 @@ class FilesystemAttachments(Type):
 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):
+    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
@@ -2809,7 +2809,7 @@ class FilesystemDetails(Type):
 class FilesystemDetailsListResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Sequence<+T_co>[~FilesystemDetails]<~FilesystemDetails>
@@ -2822,7 +2822,7 @@ class FilesystemDetailsListResult(Type):
 class FilesystemDetailsListResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~FilesystemDetailsListResult]<~FilesystemDetailsListResult>
         '''
@@ -2833,7 +2833,7 @@ class FilesystemDetailsListResults(Type):
 class FilesystemFilter(Type):
     _toSchema = {'machines': 'machines'}
     _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
+    def __init__(self, machines=None, **unknown_fields):
         '''
         machines : typing.Sequence<+T_co>[str]
         '''
@@ -2844,7 +2844,7 @@ class FilesystemFilter(Type):
 class FilesystemFilters(Type):
     _toSchema = {'filters': 'filters'}
     _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
+    def __init__(self, filters=None, **unknown_fields):
         '''
         filters : typing.Sequence<+T_co>[~FilesystemFilter]<~FilesystemFilter>
         '''
@@ -2855,7 +2855,7 @@ class FilesystemFilters(Type):
 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):
+    def __init__(self, filesystem_id=None, size=None, **unknown_fields):
         '''
         filesystem_id : str
         size : int
@@ -2868,7 +2868,7 @@ class FilesystemInfo(Type):
 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):
+    def __init__(self, attachment=None, attributes=None, filesystem_tag=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields):
         '''
         attachment : FilesystemAttachmentParams
         attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -2891,7 +2891,7 @@ class FilesystemParams(Type):
 class FilesystemParamsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : FilesystemParams
@@ -2904,7 +2904,7 @@ class FilesystemParamsResult(Type):
 class FilesystemParamsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~FilesystemParamsResult]<~FilesystemParamsResult>
         '''
@@ -2915,7 +2915,7 @@ class FilesystemParamsResults(Type):
 class FilesystemResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : Filesystem
@@ -2928,7 +2928,7 @@ class FilesystemResult(Type):
 class FilesystemResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~FilesystemResult]<~FilesystemResult>
         '''
@@ -2939,7 +2939,7 @@ class FilesystemResults(Type):
 class Filesystems(Type):
     _toSchema = {'filesystems': 'filesystems'}
     _toPy = {'filesystems': 'filesystems'}
-    def __init__(self, filesystems=None):
+    def __init__(self, filesystems=None, **unknown_fields):
         '''
         filesystems : typing.Sequence<+T_co>[~Filesystem]<~Filesystem>
         '''
@@ -2950,7 +2950,7 @@ class Filesystems(Type):
 class FindActionsByNames(Type):
     _toSchema = {'names': 'names'}
     _toPy = {'names': 'names'}
-    def __init__(self, names=None):
+    def __init__(self, names=None, **unknown_fields):
         '''
         names : typing.Sequence<+T_co>[str]
         '''
@@ -2961,7 +2961,7 @@ class FindActionsByNames(Type):
 class FindTags(Type):
     _toSchema = {'prefixes': 'prefixes'}
     _toPy = {'prefixes': 'prefixes'}
-    def __init__(self, prefixes=None):
+    def __init__(self, prefixes=None, **unknown_fields):
         '''
         prefixes : typing.Sequence<+T_co>[str]
         '''
@@ -2972,7 +2972,7 @@ class FindTags(Type):
 class FindTagsResults(Type):
     _toSchema = {'matches': 'matches'}
     _toPy = {'matches': 'matches'}
-    def __init__(self, matches=None):
+    def __init__(self, matches=None, **unknown_fields):
         '''
         matches : typing.Sequence<+T_co>[~Entity]<~Entity>
         '''
@@ -2983,7 +2983,7 @@ class FindTagsResults(Type):
 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):
+    def __init__(self, arch=None, major=None, minor=None, number=None, series=None, **unknown_fields):
         '''
         arch : str
         major : int
@@ -3002,7 +3002,7 @@ class FindToolsParams(Type):
 class FindToolsResult(Type):
     _toSchema = {'error': 'error', 'list_': 'list'}
     _toPy = {'error': 'error', 'list': 'list_'}
-    def __init__(self, error=None, list_=None):
+    def __init__(self, error=None, list_=None, **unknown_fields):
         '''
         error : Error
         list_ : typing.Sequence<+T_co>[~Tools]<~Tools>
@@ -3015,7 +3015,7 @@ class FindToolsResult(Type):
 class FullStatus(Type):
     _toSchema = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote_applications': 'remote-applications'}
     _toPy = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote-applications': 'remote_applications'}
-    def __init__(self, applications=None, machines=None, model=None, relations=None, remote_applications=None):
+    def __init__(self, applications=None, machines=None, model=None, relations=None, remote_applications=None, **unknown_fields):
         '''
         applications : typing.Mapping<~KT, +VT_co>[str, ~ApplicationStatus]<~ApplicationStatus>
         machines : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus>
@@ -3034,7 +3034,7 @@ class FullStatus(Type):
 class GetApplicationConstraints(Type):
     _toSchema = {'application': 'application'}
     _toPy = {'application': 'application'}
-    def __init__(self, application=None):
+    def __init__(self, application=None, **unknown_fields):
         '''
         application : str
         '''
@@ -3045,7 +3045,7 @@ class GetApplicationConstraints(Type):
 class GetConstraintsResults(Type):
     _toSchema = {'constraints': 'constraints'}
     _toPy = {'constraints': 'constraints'}
-    def __init__(self, constraints=None):
+    def __init__(self, constraints=None, **unknown_fields):
         '''
         constraints : Value
         '''
@@ -3056,7 +3056,7 @@ class GetConstraintsResults(Type):
 class GetLeadershipSettingsBulkResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult>
         '''
@@ -3067,7 +3067,7 @@ class GetLeadershipSettingsBulkResults(Type):
 class GetLeadershipSettingsResult(Type):
     _toSchema = {'error': 'error', 'settings': 'settings'}
     _toPy = {'error': 'error', 'settings': 'settings'}
-    def __init__(self, error=None, settings=None):
+    def __init__(self, error=None, settings=None, **unknown_fields):
         '''
         error : Error
         settings : typing.Mapping<~KT, +VT_co>[str, str]
@@ -3080,7 +3080,7 @@ class GetLeadershipSettingsResult(Type):
 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):
+    def __init__(self, public_address=None, series=None, tag=None, **unknown_fields):
         '''
         public_address : Address
         series : str
@@ -3095,7 +3095,7 @@ class HAMember(Type):
 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):
+    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
@@ -3118,7 +3118,7 @@ class HardwareCharacteristics(Type):
 class History(Type):
     _toSchema = {'error': 'error', 'statuses': 'statuses'}
     _toPy = {'error': 'error', 'statuses': 'statuses'}
-    def __init__(self, error=None, statuses=None):
+    def __init__(self, error=None, statuses=None, **unknown_fields):
         '''
         error : Error
         statuses : typing.Sequence<+T_co>[~DetailedStatus]<~DetailedStatus>
@@ -3131,7 +3131,7 @@ class History(Type):
 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):
+    def __init__(self, error=None, new_bridges=None, reconfigure_delay=None, **unknown_fields):
         '''
         error : Error
         new_bridges : typing.Sequence<+T_co>[~DeviceBridgeInfo]<~DeviceBridgeInfo>
@@ -3146,7 +3146,7 @@ class HostNetworkChange(Type):
 class HostNetworkChangeResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~HostNetworkChange]<~HostNetworkChange>
         '''
@@ -3157,7 +3157,7 @@ class HostNetworkChangeResults(Type):
 class HostPort(Type):
     _toSchema = {'address': 'Address', 'port': 'port'}
     _toPy = {'Address': 'address', 'port': 'port'}
-    def __init__(self, address=None, port=None):
+    def __init__(self, address=None, port=None, **unknown_fields):
         '''
         address : Address
         port : int
@@ -3170,7 +3170,7 @@ class HostPort(Type):
 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):
+    def __init__(self, cloud_spec=None, config=None, error=None, name=None, owner=None, **unknown_fields):
         '''
         cloud_spec : CloudSpec
         config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -3189,7 +3189,7 @@ class HostedModelConfig(Type):
 class HostedModelConfigsResults(Type):
     _toSchema = {'models': 'models'}
     _toPy = {'models': 'models'}
-    def __init__(self, models=None):
+    def __init__(self, models=None, **unknown_fields):
         '''
         models : typing.Sequence<+T_co>[~HostedModelConfig]<~HostedModelConfig>
         '''
@@ -3200,7 +3200,7 @@ class HostedModelConfigsResults(Type):
 class ImageFilterParams(Type):
     _toSchema = {'images': 'images'}
     _toPy = {'images': 'images'}
-    def __init__(self, images=None):
+    def __init__(self, images=None, **unknown_fields):
         '''
         images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec>
         '''
@@ -3211,7 +3211,7 @@ class ImageFilterParams(Type):
 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):
+    def __init__(self, arch=None, created=None, kind=None, series=None, url=None, **unknown_fields):
         '''
         arch : str
         created : str
@@ -3230,7 +3230,7 @@ class ImageMetadata(Type):
 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):
+    def __init__(self, arches=None, region=None, root_storage_type=None, series=None, stream=None, virt_type=None, **unknown_fields):
         '''
         arches : typing.Sequence<+T_co>[str]
         region : str
@@ -3251,7 +3251,7 @@ class ImageMetadataFilter(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):
+    def __init__(self, arch=None, kind=None, series=None, **unknown_fields):
         '''
         arch : str
         kind : str
@@ -3266,7 +3266,7 @@ class ImageSpec(Type):
 class InitiateMigrationArgs(Type):
     _toSchema = {'specs': 'specs'}
     _toPy = {'specs': 'specs'}
-    def __init__(self, specs=None):
+    def __init__(self, specs=None, **unknown_fields):
         '''
         specs : typing.Sequence<+T_co>[~MigrationSpec]<~MigrationSpec>
         '''
@@ -3277,7 +3277,7 @@ class InitiateMigrationArgs(Type):
 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):
+    def __init__(self, error=None, migration_id=None, model_tag=None, **unknown_fields):
         '''
         error : Error
         migration_id : str
@@ -3292,7 +3292,7 @@ class InitiateMigrationResult(Type):
 class InitiateMigrationResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~InitiateMigrationResult]<~InitiateMigrationResult>
         '''
@@ -3303,7 +3303,7 @@ class InitiateMigrationResults(Type):
 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):
+    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
@@ -3326,7 +3326,7 @@ class InstanceInfo(Type):
 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):
+    def __init__(self, arches=None, cost=None, cpu_cores=None, deprecated=None, memory=None, name=None, root_disk=None, virt_type=None, **unknown_fields):
         '''
         arches : typing.Sequence<+T_co>[str]
         cost : int
@@ -3351,7 +3351,7 @@ class InstanceType(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):
+    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
@@ -3370,7 +3370,7 @@ class InstanceTypesResult(Type):
 class InstanceTypesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult>
         '''
@@ -3381,7 +3381,7 @@ class InstanceTypesResults(Type):
 class InstancesInfo(Type):
     _toSchema = {'machines': 'machines'}
     _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
+    def __init__(self, machines=None, **unknown_fields):
         '''
         machines : typing.Sequence<+T_co>[~InstanceInfo]<~InstanceInfo>
         '''
@@ -3392,7 +3392,7 @@ class InstancesInfo(Type):
 class IntResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : int
@@ -3405,7 +3405,7 @@ class IntResult(Type):
 class IntResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~IntResult]<~IntResult>
         '''
@@ -3413,10 +3413,23 @@ class IntResults(Type):
 
 
 
+class InterfaceAddress(Type):
+    _toSchema = {'cidr': 'cidr', 'value': 'value'}
+    _toPy = {'cidr': 'cidr', 'value': 'value'}
+    def __init__(self, cidr=None, value=None, **unknown_fields):
+        '''
+        cidr : str
+        value : str
+        '''
+        self.cidr = cidr
+        self.value = value
+
+
+
 class IsMasterResult(Type):
     _toSchema = {'master': 'master'}
     _toPy = {'master': 'master'}
-    def __init__(self, master=None):
+    def __init__(self, master=None, **unknown_fields):
         '''
         master : bool
         '''
@@ -3427,7 +3440,7 @@ class IsMasterResult(Type):
 class IsMeteredResult(Type):
     _toSchema = {'metered': 'metered'}
     _toPy = {'metered': 'metered'}
-    def __init__(self, metered=None):
+    def __init__(self, metered=None, **unknown_fields):
         '''
         metered : bool
         '''
@@ -3438,7 +3451,7 @@ class IsMeteredResult(Type):
 class JobsResult(Type):
     _toSchema = {'error': 'error', 'jobs': 'jobs'}
     _toPy = {'error': 'error', 'jobs': 'jobs'}
-    def __init__(self, error=None, jobs=None):
+    def __init__(self, error=None, jobs=None, **unknown_fields):
         '''
         error : Error
         jobs : typing.Sequence<+T_co>[str]
@@ -3451,7 +3464,7 @@ class JobsResult(Type):
 class JobsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~JobsResult]<~JobsResult>
         '''
@@ -3462,7 +3475,7 @@ class JobsResults(Type):
 class LifeResult(Type):
     _toSchema = {'error': 'error', 'life': 'life'}
     _toPy = {'error': 'error', 'life': 'life'}
-    def __init__(self, error=None, life=None):
+    def __init__(self, error=None, life=None, **unknown_fields):
         '''
         error : Error
         life : str
@@ -3475,7 +3488,7 @@ class LifeResult(Type):
 class LifeResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~LifeResult]<~LifeResult>
         '''
@@ -3486,7 +3499,7 @@ class LifeResults(Type):
 class ListCloudImageMetadataResult(Type):
     _toSchema = {'result': 'result'}
     _toPy = {'result': 'result'}
-    def __init__(self, result=None):
+    def __init__(self, result=None, **unknown_fields):
         '''
         result : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata>
         '''
@@ -3497,7 +3510,7 @@ class ListCloudImageMetadataResult(Type):
 class ListImageResult(Type):
     _toSchema = {'result': 'result'}
     _toPy = {'result': 'result'}
-    def __init__(self, result=None):
+    def __init__(self, result=None, **unknown_fields):
         '''
         result : typing.Sequence<+T_co>[~ImageMetadata]<~ImageMetadata>
         '''
@@ -3508,7 +3521,7 @@ class ListImageResult(Type):
 class ListResourcesArgs(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~Entity]<~Entity>
         '''
@@ -3519,7 +3532,7 @@ class ListResourcesArgs(Type):
 class ListSSHKeys(Type):
     _toSchema = {'entities': 'entities', 'mode': 'mode'}
     _toPy = {'entities': 'entities', 'mode': 'mode'}
-    def __init__(self, entities=None, mode=None):
+    def __init__(self, entities=None, mode=None, **unknown_fields):
         '''
         entities : Entities
         mode : bool
@@ -3532,7 +3545,7 @@ class ListSSHKeys(Type):
 class ListSpacesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~Space]<~Space>
         '''
@@ -3543,7 +3556,7 @@ class ListSpacesResults(Type):
 class ListSubnetsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~Subnet]<~Subnet>
         '''
@@ -3554,7 +3567,7 @@ class ListSubnetsResults(Type):
 class ListUnitResourcesArgs(Type):
     _toSchema = {'resource_names': 'resource-names'}
     _toPy = {'resource-names': 'resource_names'}
-    def __init__(self, resource_names=None):
+    def __init__(self, resource_names=None, **unknown_fields):
         '''
         resource_names : typing.Sequence<+T_co>[str]
         '''
@@ -3565,7 +3578,7 @@ class ListUnitResourcesArgs(Type):
 class LogForwardingGetLastSentParams(Type):
     _toSchema = {'ids': 'ids'}
     _toPy = {'ids': 'ids'}
-    def __init__(self, ids=None):
+    def __init__(self, ids=None, **unknown_fields):
         '''
         ids : typing.Sequence<+T_co>[~LogForwardingID]<~LogForwardingID>
         '''
@@ -3576,7 +3589,7 @@ class LogForwardingGetLastSentParams(Type):
 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):
+    def __init__(self, err=None, record_id=None, record_timestamp=None, **unknown_fields):
         '''
         err : Error
         record_id : int
@@ -3591,7 +3604,7 @@ class LogForwardingGetLastSentResult(Type):
 class LogForwardingGetLastSentResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~LogForwardingGetLastSentResult]<~LogForwardingGetLastSentResult>
         '''
@@ -3602,7 +3615,7 @@ class LogForwardingGetLastSentResults(Type):
 class LogForwardingID(Type):
     _toSchema = {'model': 'model', 'sink': 'sink'}
     _toPy = {'model': 'model', 'sink': 'sink'}
-    def __init__(self, model=None, sink=None):
+    def __init__(self, model=None, sink=None, **unknown_fields):
         '''
         model : str
         sink : str
@@ -3615,7 +3628,7 @@ class LogForwardingID(Type):
 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):
+    def __init__(self, logforwardingid=None, record_id=None, record_timestamp=None, **unknown_fields):
         '''
         logforwardingid : LogForwardingID
         record_id : int
@@ -3630,7 +3643,7 @@ class LogForwardingSetLastSentParam(Type):
 class LogForwardingSetLastSentParams(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~LogForwardingSetLastSentParam]<~LogForwardingSetLastSentParam>
         '''
@@ -3641,7 +3654,7 @@ class LogForwardingSetLastSentParams(Type):
 class LookUpArg(Type):
     _toSchema = {'id_': 'id', 'name': 'name'}
     _toPy = {'id': 'id_', 'name': 'name'}
-    def __init__(self, id_=None, name=None):
+    def __init__(self, id_=None, name=None, **unknown_fields):
         '''
         id_ : str
         name : str
@@ -3654,7 +3667,7 @@ class LookUpArg(Type):
 class LookUpArgs(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~LookUpArg]<~LookUpArg>
         '''
@@ -3665,7 +3678,7 @@ class LookUpArgs(Type):
 class LookUpPayloadArg(Type):
     _toSchema = {'id_': 'id', 'name': 'name'}
     _toPy = {'id': 'id_', 'name': 'name'}
-    def __init__(self, id_=None, name=None):
+    def __init__(self, id_=None, name=None, **unknown_fields):
         '''
         id_ : str
         name : str
@@ -3678,7 +3691,7 @@ class LookUpPayloadArg(Type):
 class LookUpPayloadArgs(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~LookUpPayloadArg]<~LookUpPayloadArg>
         '''
@@ -3689,7 +3702,7 @@ class LookUpPayloadArgs(Type):
 class Macaroon(Type):
     _toSchema = {}
     _toPy = {}
-    def __init__(self):
+    def __init__(self, **unknown_fields):
         '''
 
         '''
@@ -3700,7 +3713,7 @@ class Macaroon(Type):
 class MachineAddresses(Type):
     _toSchema = {'addresses': 'addresses', 'tag': 'tag'}
     _toPy = {'addresses': 'addresses', 'tag': 'tag'}
-    def __init__(self, addresses=None, tag=None):
+    def __init__(self, addresses=None, tag=None, **unknown_fields):
         '''
         addresses : typing.Sequence<+T_co>[~Address]<~Address>
         tag : str
@@ -3713,7 +3726,7 @@ class MachineAddresses(Type):
 class MachineAddressesResult(Type):
     _toSchema = {'addresses': 'addresses', 'error': 'error'}
     _toPy = {'addresses': 'addresses', 'error': 'error'}
-    def __init__(self, addresses=None, error=None):
+    def __init__(self, addresses=None, error=None, **unknown_fields):
         '''
         addresses : typing.Sequence<+T_co>[~Address]<~Address>
         error : Error
@@ -3726,7 +3739,7 @@ class MachineAddressesResult(Type):
 class MachineAddressesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MachineAddressesResult]<~MachineAddressesResult>
         '''
@@ -3737,7 +3750,7 @@ class MachineAddressesResults(Type):
 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):
+    def __init__(self, block_devices=None, machine=None, **unknown_fields):
         '''
         block_devices : typing.Sequence<+T_co>[~BlockDevice]<~BlockDevice>
         machine : str
@@ -3750,7 +3763,7 @@ class MachineBlockDevices(Type):
 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):
+    def __init__(self, container_types=None, machine_tag=None, **unknown_fields):
         '''
         container_types : typing.Sequence<+T_co>[str]
         machine_tag : str
@@ -3763,7 +3776,7 @@ class MachineContainers(Type):
 class MachineContainersParams(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~MachineContainers]<~MachineContainers>
         '''
@@ -3774,7 +3787,7 @@ class MachineContainersParams(Type):
 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):
+    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
@@ -3797,7 +3810,7 @@ class MachineHardware(Type):
 class MachineNetworkConfigResult(Type):
     _toSchema = {'error': 'error', 'info': 'info'}
     _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None):
+    def __init__(self, error=None, info=None, **unknown_fields):
         '''
         error : Error
         info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
@@ -3810,7 +3823,7 @@ class MachineNetworkConfigResult(Type):
 class MachineNetworkConfigResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult>
         '''
@@ -3821,7 +3834,7 @@ class MachineNetworkConfigResults(Type):
 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):
+    def __init__(self, port_range=None, relation_tag=None, unit_tag=None, **unknown_fields):
         '''
         port_range : PortRange
         relation_tag : str
@@ -3836,7 +3849,7 @@ class MachinePortRange(Type):
 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):
+    def __init__(self, machine_tag=None, subnet_tag=None, **unknown_fields):
         '''
         machine_tag : str
         subnet_tag : str
@@ -3849,7 +3862,7 @@ class MachinePorts(Type):
 class MachinePortsParams(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~MachinePorts]<~MachinePorts>
         '''
@@ -3860,7 +3873,7 @@ class MachinePortsParams(Type):
 class MachinePortsResult(Type):
     _toSchema = {'error': 'error', 'ports': 'ports'}
     _toPy = {'error': 'error', 'ports': 'ports'}
-    def __init__(self, error=None, ports=None):
+    def __init__(self, error=None, ports=None, **unknown_fields):
         '''
         error : Error
         ports : typing.Sequence<+T_co>[~MachinePortRange]<~MachinePortRange>
@@ -3873,7 +3886,7 @@ class MachinePortsResult(Type):
 class MachinePortsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult>
         '''
@@ -3884,7 +3897,7 @@ class MachinePortsResults(Type):
 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):
+    def __init__(self, agent_status=None, containers=None, dns_name=None, hardware=None, has_vote=None, id_=None, instance_id=None, instance_status=None, ip_addresses=None, jobs=None, series=None, wants_vote=None, **unknown_fields):
         '''
         agent_status : DetailedStatus
         containers : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus>
@@ -3917,7 +3930,7 @@ class MachineStatus(Type):
 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):
+    def __init__(self, attachment_tag=None, machine_tag=None, **unknown_fields):
         '''
         attachment_tag : str
         machine_tag : str
@@ -3930,7 +3943,7 @@ class MachineStorageId(Type):
 class MachineStorageIds(Type):
     _toSchema = {'ids': 'ids'}
     _toPy = {'ids': 'ids'}
-    def __init__(self, ids=None):
+    def __init__(self, ids=None, **unknown_fields):
         '''
         ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
         '''
@@ -3941,7 +3954,7 @@ class MachineStorageIds(Type):
 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):
+    def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>
         error : Error
@@ -3956,7 +3969,7 @@ class MachineStorageIdsWatchResult(Type):
 class MachineStorageIdsWatchResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult>
         '''
@@ -3967,7 +3980,7 @@ class MachineStorageIdsWatchResults(Type):
 class MapResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -3980,7 +3993,7 @@ class MapResult(Type):
 class MapResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MapResult]<~MapResult>
         '''
@@ -3991,7 +4004,7 @@ class MapResults(Type):
 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):
+    def __init__(self, migration_id=None, phase=None, phase_changed_time=None, spec=None, **unknown_fields):
         '''
         migration_id : str
         phase : str
@@ -4008,7 +4021,7 @@ class MasterMigrationStatus(Type):
 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):
+    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
@@ -4035,7 +4048,7 @@ class Member(Type):
 class MergeLeadershipSettingsBulkParams(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam>
         '''
@@ -4046,7 +4059,7 @@ class MergeLeadershipSettingsBulkParams(Type):
 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):
+    def __init__(self, application_tag=None, settings=None, **unknown_fields):
         '''
         application_tag : str
         settings : typing.Mapping<~KT, +VT_co>[str, str]
@@ -4059,7 +4072,7 @@ class MergeLeadershipSettingsParam(Type):
 class MetadataImageIds(Type):
     _toSchema = {'image_ids': 'image-ids'}
     _toPy = {'image-ids': 'image_ids'}
-    def __init__(self, image_ids=None):
+    def __init__(self, image_ids=None, **unknown_fields):
         '''
         image_ids : typing.Sequence<+T_co>[str]
         '''
@@ -4070,7 +4083,7 @@ class MetadataImageIds(Type):
 class MetadataSaveParams(Type):
     _toSchema = {'metadata': 'metadata'}
     _toPy = {'metadata': 'metadata'}
-    def __init__(self, metadata=None):
+    def __init__(self, metadata=None, **unknown_fields):
         '''
         metadata : typing.Sequence<+T_co>[~CloudImageMetadataList]<~CloudImageMetadataList>
         '''
@@ -4081,7 +4094,7 @@ class MetadataSaveParams(Type):
 class MeterStatus(Type):
     _toSchema = {'color': 'color', 'message': 'message'}
     _toPy = {'color': 'color', 'message': 'message'}
-    def __init__(self, color=None, message=None):
+    def __init__(self, color=None, message=None, **unknown_fields):
         '''
         color : str
         message : str
@@ -4094,7 +4107,7 @@ class MeterStatus(Type):
 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):
+    def __init__(self, code=None, info=None, tag=None, **unknown_fields):
         '''
         code : str
         info : str
@@ -4109,7 +4122,7 @@ class MeterStatusParam(Type):
 class MeterStatusParams(Type):
     _toSchema = {'statues': 'statues'}
     _toPy = {'statues': 'statues'}
-    def __init__(self, statues=None):
+    def __init__(self, statues=None, **unknown_fields):
         '''
         statues : typing.Sequence<+T_co>[~MeterStatusParam]<~MeterStatusParam>
         '''
@@ -4120,7 +4133,7 @@ class MeterStatusParams(Type):
 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):
+    def __init__(self, code=None, error=None, info=None, **unknown_fields):
         '''
         code : str
         error : Error
@@ -4135,7 +4148,7 @@ class MeterStatusResult(Type):
 class MeterStatusResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult>
         '''
@@ -4146,7 +4159,7 @@ class MeterStatusResults(Type):
 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):
+    def __init__(self, key=None, time=None, value=None, **unknown_fields):
         '''
         key : str
         time : str
@@ -4161,7 +4174,7 @@ class Metric(Type):
 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):
+    def __init__(self, charm_url=None, created=None, metrics=None, uuid=None, **unknown_fields):
         '''
         charm_url : str
         created : str
@@ -4178,7 +4191,7 @@ class MetricBatch(Type):
 class MetricBatchParam(Type):
     _toSchema = {'batch': 'batch', 'tag': 'tag'}
     _toPy = {'batch': 'batch', 'tag': 'tag'}
-    def __init__(self, batch=None, tag=None):
+    def __init__(self, batch=None, tag=None, **unknown_fields):
         '''
         batch : MetricBatch
         tag : str
@@ -4191,7 +4204,7 @@ class MetricBatchParam(Type):
 class MetricBatchParams(Type):
     _toSchema = {'batches': 'batches'}
     _toPy = {'batches': 'batches'}
-    def __init__(self, batches=None):
+    def __init__(self, batches=None, **unknown_fields):
         '''
         batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam>
         '''
@@ -4202,7 +4215,7 @@ class MetricBatchParams(Type):
 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):
+    def __init__(self, key=None, time=None, unit=None, value=None, **unknown_fields):
         '''
         key : str
         time : str
@@ -4219,7 +4232,7 @@ class MetricResult(Type):
 class MetricResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~EntityMetrics]<~EntityMetrics>
         '''
@@ -4230,7 +4243,7 @@ class MetricResults(Type):
 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):
+    def __init__(self, agent_version=None, name=None, owner_tag=None, uuid=None, **unknown_fields):
         '''
         agent_version : Number
         name : str
@@ -4247,7 +4260,7 @@ class MigrationModelInfo(Type):
 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):
+    def __init__(self, external_control=None, model_tag=None, skip_initial_prechecks=None, target_info=None, **unknown_fields):
         '''
         external_control : bool
         model_tag : str
@@ -4264,7 +4277,7 @@ class MigrationSpec(Type):
 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):
+    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
@@ -4289,7 +4302,7 @@ class MigrationStatus(Type):
 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):
+    def __init__(self, addrs=None, auth_tag=None, ca_cert=None, controller_tag=None, macaroons=None, password=None, **unknown_fields):
         '''
         addrs : typing.Sequence<+T_co>[str]
         auth_tag : str
@@ -4310,7 +4323,7 @@ class MigrationTargetInfo(Type):
 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):
+    def __init__(self, migration_id=None, phase=None, success=None, **unknown_fields):
         '''
         migration_id : str
         phase : str
@@ -4325,7 +4338,7 @@ class MinionReport(Type):
 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):
+    def __init__(self, failed=None, migration_id=None, phase=None, success_count=None, unknown_count=None, unknown_sample=None, **unknown_fields):
         '''
         failed : typing.Sequence<+T_co>[str]
         migration_id : str
@@ -4346,7 +4359,7 @@ class MinionReports(Type):
 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):
+    def __init__(self, name=None, owner_tag=None, uuid=None, **unknown_fields):
         '''
         name : str
         owner_tag : str
@@ -4361,7 +4374,7 @@ class Model(Type):
 class ModelArgs(Type):
     _toSchema = {'model_tag': 'model-tag'}
     _toPy = {'model-tag': 'model_tag'}
-    def __init__(self, model_tag=None):
+    def __init__(self, model_tag=None, **unknown_fields):
         '''
         model_tag : str
         '''
@@ -4372,7 +4385,7 @@ class ModelArgs(Type):
 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):
+    def __init__(self, blocks=None, model_uuid=None, name=None, owner_tag=None, **unknown_fields):
         '''
         blocks : typing.Sequence<+T_co>[str]
         model_uuid : str
@@ -4389,7 +4402,7 @@ class ModelBlockInfo(Type):
 class ModelBlockInfoList(Type):
     _toSchema = {'models': 'models'}
     _toPy = {'models': 'models'}
-    def __init__(self, models=None):
+    def __init__(self, models=None, **unknown_fields):
         '''
         models : typing.Sequence<+T_co>[~ModelBlockInfo]<~ModelBlockInfo>
         '''
@@ -4400,7 +4413,7 @@ class ModelBlockInfoList(Type):
 class ModelConfigResult(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         '''
@@ -4411,7 +4424,7 @@ class ModelConfigResult(Type):
 class ModelConfigResults(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue>
         '''
@@ -4422,7 +4435,7 @@ class ModelConfigResults(Type):
 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):
+    def __init__(self, cloud_tag=None, config=None, credential=None, name=None, owner_tag=None, region=None, **unknown_fields):
         '''
         cloud_tag : str
         config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -4443,7 +4456,7 @@ class ModelCreateArgs(Type):
 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):
+    def __init__(self, cloud_region=None, cloud_tag=None, config=None, **unknown_fields):
         '''
         cloud_region : str
         cloud_tag : str
@@ -4458,7 +4471,7 @@ class ModelDefaultValues(Type):
 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):
+    def __init__(self, controller=None, default=None, regions=None, **unknown_fields):
         '''
         controller : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         default : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -4473,7 +4486,7 @@ class ModelDefaults(Type):
 class ModelDefaultsResult(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults>
         '''
@@ -4482,10 +4495,11 @@ class ModelDefaultsResult(Type):
 
 
 class ModelInfo(Type):
-    _toSchema = {'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'default_series': 'default-series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
-    _toPy = {'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'default-series': 'default_series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
-    def __init__(self, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, default_series=None, life=None, machines=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, users=None, uuid=None):
+    _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'default_series': 'default-series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
+    _toPy = {'agent-version': 'agent_version', 'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'default-series': 'default_series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'}
+    def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, default_series=None, life=None, machines=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, users=None, uuid=None, **unknown_fields):
         '''
+        agent_version : Number
         cloud_credential_tag : str
         cloud_region : str
         cloud_tag : str
@@ -4502,6 +4516,7 @@ class ModelInfo(Type):
         users : typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>
         uuid : str
         '''
+        self.agent_version = Number.from_json(agent_version) if agent_version else None
         self.cloud_credential_tag = cloud_credential_tag
         self.cloud_region = cloud_region
         self.cloud_tag = cloud_tag
@@ -4523,7 +4538,7 @@ class ModelInfo(Type):
 class ModelInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : ModelInfo
@@ -4536,7 +4551,7 @@ class ModelInfoResult(Type):
 class ModelInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult>
         '''
@@ -4547,7 +4562,7 @@ class ModelInfoResults(Type):
 class ModelInstanceTypesConstraint(Type):
     _toSchema = {'value': 'value'}
     _toPy = {'value': 'value'}
-    def __init__(self, value=None):
+    def __init__(self, value=None, **unknown_fields):
         '''
         value : Value
         '''
@@ -4558,7 +4573,7 @@ class ModelInstanceTypesConstraint(Type):
 class ModelInstanceTypesConstraints(Type):
     _toSchema = {'constraints': 'constraints'}
     _toPy = {'constraints': 'constraints'}
-    def __init__(self, constraints=None):
+    def __init__(self, constraints=None, **unknown_fields):
         '''
         constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint>
         '''
@@ -4569,7 +4584,7 @@ class ModelInstanceTypesConstraints(Type):
 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):
+    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
@@ -4590,7 +4605,7 @@ class ModelMachineInfo(Type):
 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):
+    def __init__(self, end=None, start=None, status=None, **unknown_fields):
         '''
         end : str
         start : str
@@ -4605,7 +4620,7 @@ class ModelMigrationStatus(Type):
 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):
+    def __init__(self, error=None, name=None, uuid=None, **unknown_fields):
         '''
         error : Error
         name : str
@@ -4620,7 +4635,7 @@ class ModelResult(Type):
 class ModelSLA(Type):
     _toSchema = {'creds': 'creds', 'level': 'level'}
     _toPy = {'creds': 'creds', 'level': 'level'}
-    def __init__(self, creds=None, level=None):
+    def __init__(self, creds=None, level=None, **unknown_fields):
         '''
         creds : typing.Sequence<+T_co>[int]
         level : str
@@ -4633,7 +4648,7 @@ class ModelSLA(Type):
 class ModelSLAInfo(Type):
     _toSchema = {'level': 'level', 'owner': 'owner'}
     _toPy = {'level': 'level', 'owner': 'owner'}
-    def __init__(self, level=None, owner=None):
+    def __init__(self, level=None, owner=None, **unknown_fields):
         '''
         level : str
         owner : str
@@ -4646,7 +4661,7 @@ class ModelSLAInfo(Type):
 class ModelSet(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         '''
@@ -4657,7 +4672,7 @@ class ModelSet(Type):
 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):
+    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
@@ -4678,7 +4693,7 @@ class ModelStatus(Type):
 class ModelStatusInfo(Type):
     _toSchema = {'available_version': 'available-version', 'cloud_tag': 'cloud-tag', 'meter_status': 'meter-status', 'model_status': 'model-status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'}
     _toPy = {'available-version': 'available_version', 'cloud-tag': 'cloud_tag', 'meter-status': 'meter_status', 'model-status': 'model_status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'}
-    def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, version=None):
+    def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, version=None, **unknown_fields):
         '''
         available_version : str
         cloud_tag : str
@@ -4703,7 +4718,7 @@ class ModelStatusInfo(Type):
 class ModelStatusResults(Type):
     _toSchema = {'models': 'models'}
     _toPy = {'models': 'models'}
-    def __init__(self, models=None):
+    def __init__(self, models=None, **unknown_fields):
         '''
         models : typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus>
         '''
@@ -4714,7 +4729,7 @@ class ModelStatusResults(Type):
 class ModelTag(Type):
     _toSchema = {}
     _toPy = {}
-    def __init__(self):
+    def __init__(self, **unknown_fields):
         '''
 
         '''
@@ -4725,7 +4740,7 @@ class ModelTag(Type):
 class ModelUnset(Type):
     _toSchema = {'keys': 'keys'}
     _toPy = {'keys': 'keys'}
-    def __init__(self, keys=None):
+    def __init__(self, keys=None, **unknown_fields):
         '''
         keys : typing.Sequence<+T_co>[str]
         '''
@@ -4736,7 +4751,7 @@ class ModelUnset(Type):
 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):
+    def __init__(self, cloud_region=None, cloud_tag=None, keys=None, **unknown_fields):
         '''
         cloud_region : str
         cloud_tag : str
@@ -4751,7 +4766,7 @@ class ModelUnsetKeys(Type):
 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):
+    def __init__(self, access=None, display_name=None, last_connection=None, user=None, **unknown_fields):
         '''
         access : str
         display_name : str
@@ -4768,7 +4783,7 @@ class ModelUserInfo(Type):
 class ModelUserInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : ModelUserInfo
@@ -4781,7 +4796,7 @@ class ModelUserInfoResult(Type):
 class ModelUserInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ModelUserInfoResult]<~ModelUserInfoResult>
         '''
@@ -4792,7 +4807,7 @@ class ModelUserInfoResults(Type):
 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):
+    def __init__(self, access=None, action=None, user_tag=None, **unknown_fields):
         '''
         access : str
         action : str
@@ -4807,7 +4822,7 @@ class ModifyControllerAccess(Type):
 class ModifyControllerAccessRequest(Type):
     _toSchema = {'changes': 'changes'}
     _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None):
+    def __init__(self, changes=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[~ModifyControllerAccess]<~ModifyControllerAccess>
         '''
@@ -4818,7 +4833,7 @@ class ModifyControllerAccessRequest(Type):
 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):
+    def __init__(self, access=None, action=None, model_tag=None, user_tag=None, **unknown_fields):
         '''
         access : str
         action : str
@@ -4835,7 +4850,7 @@ class ModifyModelAccess(Type):
 class ModifyModelAccessRequest(Type):
     _toSchema = {'changes': 'changes'}
     _toPy = {'changes': 'changes'}
-    def __init__(self, changes=None):
+    def __init__(self, changes=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess>
         '''
@@ -4846,7 +4861,7 @@ class ModifyModelAccessRequest(Type):
 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):
+    def __init__(self, ssh_keys=None, user=None, **unknown_fields):
         '''
         ssh_keys : typing.Sequence<+T_co>[str]
         user : str
@@ -4859,7 +4874,7 @@ class ModifyUserSSHKeys(Type):
 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):
+    def __init__(self, ha_members=None, master=None, rs_members=None, **unknown_fields):
         '''
         ha_members : typing.Sequence<+T_co>[~HAMember]<~HAMember>
         master : HAMember
@@ -4874,7 +4889,7 @@ class MongoUpgradeResults(Type):
 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):
+    def __init__(self, engine=None, major=None, minor=None, patch=None, **unknown_fields):
         '''
         engine : str
         major : int
@@ -4891,7 +4906,7 @@ class MongoVersion(Type):
 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):
+    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
@@ -4937,10 +4952,62 @@ class NetworkConfig(Type):
 
 
 
+class NetworkInfo(Type):
+    _toSchema = {'addresses': 'addresses', 'interface_name': 'interface-name', 'mac_address': 'mac-address'}
+    _toPy = {'addresses': 'addresses', 'interface-name': 'interface_name', 'mac-address': 'mac_address'}
+    def __init__(self, addresses=None, interface_name=None, mac_address=None, **unknown_fields):
+        '''
+        addresses : typing.Sequence<+T_co>[~InterfaceAddress]<~InterfaceAddress>
+        interface_name : str
+        mac_address : str
+        '''
+        self.addresses = [InterfaceAddress.from_json(o) for o in addresses or []]
+        self.interface_name = interface_name
+        self.mac_address = mac_address
+
+
+
+class NetworkInfoParams(Type):
+    _toSchema = {'bindings': 'bindings', 'unit': 'unit'}
+    _toPy = {'bindings': 'bindings', 'unit': 'unit'}
+    def __init__(self, bindings=None, unit=None, **unknown_fields):
+        '''
+        bindings : typing.Sequence<+T_co>[str]
+        unit : str
+        '''
+        self.bindings = bindings
+        self.unit = unit
+
+
+
+class NetworkInfoResult(Type):
+    _toSchema = {'error': 'error', 'network_info': 'network-info'}
+    _toPy = {'error': 'error', 'network-info': 'network_info'}
+    def __init__(self, error=None, network_info=None, **unknown_fields):
+        '''
+        error : Error
+        network_info : typing.Sequence<+T_co>[~NetworkInfo]<~NetworkInfo>
+        '''
+        self.error = Error.from_json(error) if error else None
+        self.network_info = [NetworkInfo.from_json(o) for o in network_info or []]
+
+
+
+class NetworkInfoResults(Type):
+    _toSchema = {'results': 'results'}
+    _toPy = {'results': 'results'}
+    def __init__(self, results=None, **unknown_fields):
+        '''
+        results : typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult>
+        '''
+        self.results = results
+
+
+
 class NetworkInterface(Type):
     _toSchema = {'dns_nameservers': 'dns-nameservers', 'gateway': 'gateway', 'ip_addresses': 'ip-addresses', 'is_up': 'is-up', 'mac_address': 'mac-address', 'space': 'space'}
     _toPy = {'dns-nameservers': 'dns_nameservers', 'gateway': 'gateway', 'ip-addresses': 'ip_addresses', 'is-up': 'is_up', 'mac-address': 'mac_address', 'space': 'space'}
-    def __init__(self, dns_nameservers=None, gateway=None, ip_addresses=None, is_up=None, mac_address=None, space=None):
+    def __init__(self, dns_nameservers=None, gateway=None, ip_addresses=None, is_up=None, mac_address=None, space=None, **unknown_fields):
         '''
         dns_nameservers : typing.Sequence<+T_co>[str]
         gateway : str
@@ -4961,7 +5028,7 @@ class NetworkInterface(Type):
 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):
+    def __init__(self, destination_cidr=None, gateway_ip=None, metric=None, **unknown_fields):
         '''
         destination_cidr : str
         gateway_ip : str
@@ -4976,7 +5043,7 @@ class NetworkRoute(Type):
 class NotifyWatchResult(Type):
     _toSchema = {'error': 'error', 'notifywatcherid': 'NotifyWatcherId'}
     _toPy = {'NotifyWatcherId': 'notifywatcherid', 'error': 'error'}
-    def __init__(self, notifywatcherid=None, error=None):
+    def __init__(self, notifywatcherid=None, error=None, **unknown_fields):
         '''
         notifywatcherid : str
         error : Error
@@ -4989,7 +5056,7 @@ class NotifyWatchResult(Type):
 class NotifyWatchResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult>
         '''
@@ -5000,7 +5067,7 @@ class NotifyWatchResults(Type):
 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):
+    def __init__(self, build=None, major=None, minor=None, patch=None, tag=None, **unknown_fields):
         '''
         build : int
         major : int
@@ -5019,7 +5086,7 @@ class Number(Type):
 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):
+    def __init__(self, class_=None, id_=None, labels=None, machine=None, status=None, type_=None, unit=None, **unknown_fields):
         '''
         class_ : str
         id_ : str
@@ -5042,7 +5109,7 @@ class Payload(Type):
 class PayloadListArgs(Type):
     _toSchema = {'patterns': 'patterns'}
     _toPy = {'patterns': 'patterns'}
-    def __init__(self, patterns=None):
+    def __init__(self, patterns=None, **unknown_fields):
         '''
         patterns : typing.Sequence<+T_co>[str]
         '''
@@ -5053,7 +5120,7 @@ class PayloadListArgs(Type):
 class PayloadListResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~Payload]<~Payload>
         '''
@@ -5064,7 +5131,7 @@ class PayloadListResults(Type):
 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):
+    def __init__(self, entity=None, error=None, not_found=None, payload=None, **unknown_fields):
         '''
         entity : Entity
         error : Error
@@ -5081,7 +5148,7 @@ class PayloadResult(Type):
 class PayloadResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult>
         '''
@@ -5092,7 +5159,7 @@ class PayloadResults(Type):
 class PhaseResult(Type):
     _toSchema = {'error': 'error', 'phase': 'phase'}
     _toPy = {'error': 'error', 'phase': 'phase'}
-    def __init__(self, error=None, phase=None):
+    def __init__(self, error=None, phase=None, **unknown_fields):
         '''
         error : Error
         phase : str
@@ -5105,7 +5172,7 @@ class PhaseResult(Type):
 class PhaseResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~PhaseResult]<~PhaseResult>
         '''
@@ -5116,7 +5183,7 @@ class PhaseResults(Type):
 class Placement(Type):
     _toSchema = {'directive': 'directive', 'scope': 'scope'}
     _toPy = {'directive': 'directive', 'scope': 'scope'}
-    def __init__(self, directive=None, scope=None):
+    def __init__(self, directive=None, scope=None, **unknown_fields):
         '''
         directive : str
         scope : str
@@ -5129,7 +5196,7 @@ class Placement(Type):
 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):
+    def __init__(self, from_port=None, protocol=None, to_port=None, **unknown_fields):
         '''
         from_port : int
         protocol : str
@@ -5144,7 +5211,7 @@ class PortRange(Type):
 class PrivateAddress(Type):
     _toSchema = {'target': 'target'}
     _toPy = {'target': 'target'}
-    def __init__(self, target=None):
+    def __init__(self, target=None, **unknown_fields):
         '''
         target : str
         '''
@@ -5155,7 +5222,7 @@ class PrivateAddress(Type):
 class PrivateAddressResults(Type):
     _toSchema = {'private_address': 'private-address'}
     _toPy = {'private-address': 'private_address'}
-    def __init__(self, private_address=None):
+    def __init__(self, private_address=None, **unknown_fields):
         '''
         private_address : str
         '''
@@ -5166,7 +5233,7 @@ class PrivateAddressResults(Type):
 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):
+    def __init__(self, interface_name=None, mac_address=None, provider_id=None, **unknown_fields):
         '''
         interface_name : str
         mac_address : str
@@ -5181,7 +5248,7 @@ class ProviderInterfaceInfo(Type):
 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):
+    def __init__(self, error=None, interfaces=None, machine_tag=None, **unknown_fields):
         '''
         error : Error
         interfaces : typing.Sequence<+T_co>[~ProviderInterfaceInfo]<~ProviderInterfaceInfo>
@@ -5196,7 +5263,7 @@ class ProviderInterfaceInfoResult(Type):
 class ProviderInterfaceInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ProviderInterfaceInfoResult]<~ProviderInterfaceInfoResult>
         '''
@@ -5207,7 +5274,7 @@ class ProviderInterfaceInfoResults(Type):
 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):
+    def __init__(self, error=None, name=None, provider_id=None, subnets=None, **unknown_fields):
         '''
         error : Error
         name : str
@@ -5224,7 +5291,7 @@ class ProviderSpace(Type):
 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):
+    def __init__(self, constraints=None, controller_config=None, endpoint_bindings=None, image_metadata=None, jobs=None, placement=None, series=None, subnets_to_zones=None, tags=None, volumes=None, **unknown_fields):
         '''
         constraints : Value
         controller_config : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -5253,7 +5320,7 @@ class ProvisioningInfo(Type):
 class ProvisioningInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : ProvisioningInfo
@@ -5266,7 +5333,7 @@ class ProvisioningInfoResult(Type):
 class ProvisioningInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ProvisioningInfoResult]<~ProvisioningInfoResult>
         '''
@@ -5277,7 +5344,7 @@ class ProvisioningInfoResults(Type):
 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):
+    def __init__(self, data_dir=None, disable_package_commands=None, machine_id=None, nonce=None, **unknown_fields):
         '''
         data_dir : str
         disable_package_commands : bool
@@ -5294,7 +5361,7 @@ class ProvisioningScriptParams(Type):
 class ProvisioningScriptResult(Type):
     _toSchema = {'script': 'script'}
     _toPy = {'script': 'script'}
-    def __init__(self, script=None):
+    def __init__(self, script=None, **unknown_fields):
         '''
         script : str
         '''
@@ -5305,7 +5372,7 @@ class ProvisioningScriptResult(Type):
 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):
+    def __init__(self, ftp=None, http=None, https=None, no_proxy=None, **unknown_fields):
         '''
         ftp : str
         http : str
@@ -5322,7 +5389,7 @@ class ProxyConfig(Type):
 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):
+    def __init__(self, apt_proxy_settings=None, error=None, proxy_settings=None, **unknown_fields):
         '''
         apt_proxy_settings : ProxyConfig
         error : Error
@@ -5337,7 +5404,7 @@ class ProxyConfigResult(Type):
 class ProxyConfigResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ProxyConfigResult]<~ProxyConfigResult>
         '''
@@ -5348,7 +5415,7 @@ class ProxyConfigResults(Type):
 class PublicAddress(Type):
     _toSchema = {'target': 'target'}
     _toPy = {'target': 'target'}
-    def __init__(self, target=None):
+    def __init__(self, target=None, **unknown_fields):
         '''
         target : str
         '''
@@ -5359,7 +5426,7 @@ class PublicAddress(Type):
 class PublicAddressResults(Type):
     _toSchema = {'public_address': 'public-address'}
     _toPy = {'public-address': 'public_address'}
-    def __init__(self, public_address=None):
+    def __init__(self, public_address=None, **unknown_fields):
         '''
         public_address : str
         '''
@@ -5370,7 +5437,7 @@ class PublicAddressResults(Type):
 class RebootActionResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : str
@@ -5383,7 +5450,7 @@ class RebootActionResult(Type):
 class RebootActionResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~RebootActionResult]<~RebootActionResult>
         '''
@@ -5394,7 +5461,7 @@ class RebootActionResults(Type):
 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):
+    def __init__(self, region_name=None, value=None, **unknown_fields):
         '''
         region_name : str
         value : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -5407,7 +5474,7 @@ class RegionDefaults(Type):
 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):
+    def __init__(self, changedunits=None, departedunits=None, id_=None, life=None, **unknown_fields):
         '''
         changedunits : typing.Mapping<~KT, +VT_co>[str, ~RelationUnitChange]<~RelationUnitChange>
         departedunits : typing.Sequence<+T_co>[str]
@@ -5424,7 +5491,7 @@ class RelationChange(Type):
 class RelationIds(Type):
     _toSchema = {'relation_ids': 'relation-ids'}
     _toPy = {'relation-ids': 'relation_ids'}
-    def __init__(self, relation_ids=None):
+    def __init__(self, relation_ids=None, **unknown_fields):
         '''
         relation_ids : typing.Sequence<+T_co>[int]
         '''
@@ -5435,7 +5502,7 @@ class RelationIds(Type):
 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):
+    def __init__(self, endpoint=None, error=None, id_=None, key=None, life=None, **unknown_fields):
         '''
         endpoint : Endpoint
         error : Error
@@ -5454,7 +5521,7 @@ class RelationResult(Type):
 class RelationResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~RelationResult]<~RelationResult>
         '''
@@ -5465,7 +5532,7 @@ class RelationResults(Type):
 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):
+    def __init__(self, endpoints=None, id_=None, interface=None, key=None, scope=None, **unknown_fields):
         '''
         endpoints : typing.Sequence<+T_co>[~EndpointStatus]<~EndpointStatus>
         id_ : int
@@ -5484,7 +5551,7 @@ class RelationStatus(Type):
 class RelationUnit(Type):
     _toSchema = {'relation': 'relation', 'unit': 'unit'}
     _toPy = {'relation': 'relation', 'unit': 'unit'}
-    def __init__(self, relation=None, unit=None):
+    def __init__(self, relation=None, unit=None, **unknown_fields):
         '''
         relation : str
         unit : str
@@ -5497,7 +5564,7 @@ class RelationUnit(Type):
 class RelationUnitChange(Type):
     _toSchema = {'settings': 'settings'}
     _toPy = {'settings': 'settings'}
-    def __init__(self, settings=None):
+    def __init__(self, settings=None, **unknown_fields):
         '''
         settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         '''
@@ -5508,7 +5575,7 @@ class RelationUnitChange(Type):
 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):
+    def __init__(self, local_unit=None, relation=None, remote_unit=None, **unknown_fields):
         '''
         local_unit : str
         relation : str
@@ -5523,7 +5590,7 @@ class RelationUnitPair(Type):
 class RelationUnitPairs(Type):
     _toSchema = {'relation_unit_pairs': 'relation-unit-pairs'}
     _toPy = {'relation-unit-pairs': 'relation_unit_pairs'}
-    def __init__(self, relation_unit_pairs=None):
+    def __init__(self, relation_unit_pairs=None, **unknown_fields):
         '''
         relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair>
         '''
@@ -5534,7 +5601,7 @@ class RelationUnitPairs(Type):
 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):
+    def __init__(self, relation=None, settings=None, unit=None, **unknown_fields):
         '''
         relation : str
         settings : typing.Mapping<~KT, +VT_co>[str, str]
@@ -5549,7 +5616,7 @@ class RelationUnitSettings(Type):
 class RelationUnits(Type):
     _toSchema = {'relation_units': 'relation-units'}
     _toPy = {'relation-units': 'relation_units'}
-    def __init__(self, relation_units=None):
+    def __init__(self, relation_units=None, **unknown_fields):
         '''
         relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit>
         '''
@@ -5560,7 +5627,7 @@ class RelationUnits(Type):
 class RelationUnitsChange(Type):
     _toSchema = {'changed': 'changed', 'departed': 'departed'}
     _toPy = {'changed': 'changed', 'departed': 'departed'}
-    def __init__(self, changed=None, departed=None):
+    def __init__(self, changed=None, departed=None, **unknown_fields):
         '''
         changed : typing.Mapping<~KT, +VT_co>[str, ~UnitSettings]<~UnitSettings>
         departed : typing.Sequence<+T_co>[str]
@@ -5573,7 +5640,7 @@ class RelationUnitsChange(Type):
 class RelationUnitsSettings(Type):
     _toSchema = {'relation_units': 'relation-units'}
     _toPy = {'relation-units': 'relation_units'}
-    def __init__(self, relation_units=None):
+    def __init__(self, relation_units=None, **unknown_fields):
         '''
         relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings>
         '''
@@ -5584,7 +5651,7 @@ class RelationUnitsSettings(Type):
 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):
+    def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
         '''
         changes : RelationUnitsChange
         error : Error
@@ -5599,7 +5666,7 @@ class RelationUnitsWatchResult(Type):
 class RelationUnitsWatchResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult>
         '''
@@ -5610,7 +5677,7 @@ class RelationUnitsWatchResults(Type):
 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):
+    def __init__(self, application_tag=None, life=None, relations=None, **unknown_fields):
         '''
         application_tag : str
         life : str
@@ -5625,7 +5692,7 @@ class RemoteApplicationChange(Type):
 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):
+    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
@@ -5648,7 +5715,7 @@ class RemoteApplicationInfo(Type):
 class RemoteApplicationInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : RemoteApplicationInfo
@@ -5661,7 +5728,7 @@ class RemoteApplicationInfoResult(Type):
 class RemoteApplicationInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~RemoteApplicationInfoResult]<~RemoteApplicationInfoResult>
         '''
@@ -5672,7 +5739,7 @@ class RemoteApplicationInfoResults(Type):
 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):
+    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
@@ -5695,7 +5762,7 @@ class RemoteApplicationStatus(Type):
 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):
+    def __init__(self, change=None, error=None, id_=None, **unknown_fields):
         '''
         change : RemoteApplicationChange
         error : Error
@@ -5710,7 +5777,7 @@ class RemoteApplicationWatchResult(Type):
 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):
+    def __init__(self, interface=None, limit=None, name=None, role=None, scope=None, **unknown_fields):
         '''
         interface : str
         limit : int
@@ -5729,7 +5796,7 @@ class RemoteEndpoint(Type):
 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):
+    def __init__(self, model_uuid=None, token=None, **unknown_fields):
         '''
         model_uuid : str
         token : str
@@ -5742,7 +5809,7 @@ class RemoteEntityId(Type):
 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):
+    def __init__(self, changed_units=None, departed_units=None, id_=None, life=None, **unknown_fields):
         '''
         changed_units : typing.Mapping<~KT, +VT_co>[str, ~RemoteRelationUnitChange]<~RemoteRelationUnitChange>
         departed_units : typing.Sequence<+T_co>[str]
@@ -5759,7 +5826,7 @@ class RemoteRelationChange(Type):
 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):
+    def __init__(self, settings=None, unit_id=None, **unknown_fields):
         '''
         settings : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         unit_id : RemoteEntityId
@@ -5772,7 +5839,7 @@ class RemoteRelationUnitChange(Type):
 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):
+    def __init__(self, changed=None, initial=None, removed=None, **unknown_fields):
         '''
         changed : typing.Sequence<+T_co>[~RemoteRelationChange]<~RemoteRelationChange>
         initial : bool
@@ -5787,7 +5854,7 @@ class RemoteRelationsChange(Type):
 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):
+    def __init__(self, remoterelationswatcherid=None, change=None, error=None, **unknown_fields):
         '''
         remoterelationswatcherid : str
         change : RemoteRelationsChange
@@ -5802,7 +5869,7 @@ class RemoteRelationsWatchResult(Type):
 class RemoveBlocksArgs(Type):
     _toSchema = {'all_': 'all'}
     _toPy = {'all': 'all_'}
-    def __init__(self, all_=None):
+    def __init__(self, all_=None, **unknown_fields):
         '''
         all_ : bool
         '''
@@ -5813,7 +5880,7 @@ class RemoveBlocksArgs(Type):
 class ResolveCharmResult(Type):
     _toSchema = {'error': 'error', 'url': 'url'}
     _toPy = {'error': 'error', 'url': 'url'}
-    def __init__(self, error=None, url=None):
+    def __init__(self, error=None, url=None, **unknown_fields):
         '''
         error : str
         url : str
@@ -5826,7 +5893,7 @@ class ResolveCharmResult(Type):
 class ResolveCharmResults(Type):
     _toSchema = {'urls': 'urls'}
     _toPy = {'urls': 'urls'}
-    def __init__(self, urls=None):
+    def __init__(self, urls=None, **unknown_fields):
         '''
         urls : typing.Sequence<+T_co>[~ResolveCharmResult]<~ResolveCharmResult>
         '''
@@ -5837,7 +5904,7 @@ class ResolveCharmResults(Type):
 class ResolveCharms(Type):
     _toSchema = {'references': 'references'}
     _toPy = {'references': 'references'}
-    def __init__(self, references=None):
+    def __init__(self, references=None, **unknown_fields):
         '''
         references : typing.Sequence<+T_co>[str]
         '''
@@ -5848,7 +5915,7 @@ class ResolveCharms(Type):
 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):
+    def __init__(self, retry=None, unit_name=None, **unknown_fields):
         '''
         retry : bool
         unit_name : str
@@ -5861,7 +5928,7 @@ class Resolved(Type):
 class ResolvedModeResult(Type):
     _toSchema = {'error': 'error', 'mode': 'mode'}
     _toPy = {'error': 'error', 'mode': 'mode'}
-    def __init__(self, error=None, mode=None):
+    def __init__(self, error=None, mode=None, **unknown_fields):
         '''
         error : Error
         mode : str
@@ -5874,7 +5941,7 @@ class ResolvedModeResult(Type):
 class ResolvedModeResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult>
         '''
@@ -5885,7 +5952,7 @@ class ResolvedModeResults(Type):
 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):
+    def __init__(self, charmresource=None, application=None, id_=None, pending_id=None, timestamp=None, username=None, **unknown_fields):
         '''
         charmresource : CharmResource
         application : str
@@ -5906,7 +5973,7 @@ class Resource(Type):
 class ResourceResult(Type):
     _toSchema = {'errorresult': 'ErrorResult', 'resource': 'resource'}
     _toPy = {'ErrorResult': 'errorresult', 'resource': 'resource'}
-    def __init__(self, errorresult=None, resource=None):
+    def __init__(self, errorresult=None, resource=None, **unknown_fields):
         '''
         errorresult : ErrorResult
         resource : Resource
@@ -5919,7 +5986,7 @@ class ResourceResult(Type):
 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):
+    def __init__(self, errorresult=None, charm_store_resources=None, resources=None, unit_resources=None, **unknown_fields):
         '''
         errorresult : ErrorResult
         charm_store_resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource>
@@ -5936,7 +6003,7 @@ class ResourcesResult(Type):
 class ResourcesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ResourcesResult]<~ResourcesResult>
         '''
@@ -5947,7 +6014,7 @@ class ResourcesResults(Type):
 class RestoreArgs(Type):
     _toSchema = {'backup_id': 'backup-id'}
     _toPy = {'backup-id': 'backup_id'}
-    def __init__(self, backup_id=None):
+    def __init__(self, backup_id=None, **unknown_fields):
         '''
         backup_id : str
         '''
@@ -5958,7 +6025,7 @@ class RestoreArgs(Type):
 class ResumeReplicationParams(Type):
     _toSchema = {'members': 'members'}
     _toPy = {'members': 'members'}
-    def __init__(self, members=None):
+    def __init__(self, members=None, **unknown_fields):
         '''
         members : typing.Sequence<+T_co>[~Member]<~Member>
         '''
@@ -5969,7 +6036,7 @@ class ResumeReplicationParams(Type):
 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):
+    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
@@ -5988,7 +6055,7 @@ class RetryStrategy(Type):
 class RetryStrategyResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : RetryStrategy
@@ -6001,7 +6068,7 @@ class RetryStrategyResult(Type):
 class RetryStrategyResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~RetryStrategyResult]<~RetryStrategyResult>
         '''
@@ -6012,7 +6079,7 @@ class RetryStrategyResults(Type):
 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):
+    def __init__(self, applications=None, commands=None, machines=None, timeout=None, units=None, **unknown_fields):
         '''
         applications : typing.Sequence<+T_co>[str]
         commands : str
@@ -6031,7 +6098,7 @@ class RunParams(Type):
 class SSHAddressResult(Type):
     _toSchema = {'address': 'address', 'error': 'error'}
     _toPy = {'address': 'address', 'error': 'error'}
-    def __init__(self, address=None, error=None):
+    def __init__(self, address=None, error=None, **unknown_fields):
         '''
         address : str
         error : Error
@@ -6044,7 +6111,7 @@ class SSHAddressResult(Type):
 class SSHAddressResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult>
         '''
@@ -6055,7 +6122,7 @@ class SSHAddressResults(Type):
 class SSHAddressesResult(Type):
     _toSchema = {'addresses': 'addresses', 'error': 'error'}
     _toPy = {'addresses': 'addresses', 'error': 'error'}
-    def __init__(self, addresses=None, error=None):
+    def __init__(self, addresses=None, error=None, **unknown_fields):
         '''
         addresses : typing.Sequence<+T_co>[str]
         error : Error
@@ -6068,7 +6135,7 @@ class SSHAddressesResult(Type):
 class SSHAddressesResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~SSHAddressesResult]<~SSHAddressesResult>
         '''
@@ -6079,7 +6146,7 @@ class SSHAddressesResults(Type):
 class SSHHostKeySet(Type):
     _toSchema = {'entity_keys': 'entity-keys'}
     _toPy = {'entity-keys': 'entity_keys'}
-    def __init__(self, entity_keys=None):
+    def __init__(self, entity_keys=None, **unknown_fields):
         '''
         entity_keys : typing.Sequence<+T_co>[~SSHHostKeys]<~SSHHostKeys>
         '''
@@ -6090,7 +6157,7 @@ class SSHHostKeySet(Type):
 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):
+    def __init__(self, public_keys=None, tag=None, **unknown_fields):
         '''
         public_keys : typing.Sequence<+T_co>[str]
         tag : str
@@ -6103,7 +6170,7 @@ class SSHHostKeys(Type):
 class SSHProxyResult(Type):
     _toSchema = {'use_proxy': 'use-proxy'}
     _toPy = {'use-proxy': 'use_proxy'}
-    def __init__(self, use_proxy=None):
+    def __init__(self, use_proxy=None, **unknown_fields):
         '''
         use_proxy : bool
         '''
@@ -6114,7 +6181,7 @@ class SSHProxyResult(Type):
 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):
+    def __init__(self, error=None, public_keys=None, **unknown_fields):
         '''
         error : Error
         public_keys : typing.Sequence<+T_co>[str]
@@ -6127,7 +6194,7 @@ class SSHPublicKeysResult(Type):
 class SSHPublicKeysResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult>
         '''
@@ -6138,7 +6205,7 @@ class SSHPublicKeysResults(Type):
 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):
+    def __init__(self, bytes_=None, charms=None, tools=None, **unknown_fields):
         '''
         bytes_ : typing.Sequence<+T_co>[int]
         charms : typing.Sequence<+T_co>[str]
@@ -6153,7 +6220,7 @@ class SerializedModel(Type):
 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):
+    def __init__(self, application=None, application_revision=None, charmstore_revision=None, name=None, unit_revisions=None, **unknown_fields):
         '''
         application : str
         application_revision : SerializedModelResourceRevision
@@ -6172,7 +6239,7 @@ class SerializedModelResource(Type):
 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):
+    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
@@ -6199,7 +6266,7 @@ class SerializedModelResourceRevision(Type):
 class SerializedModelTools(Type):
     _toSchema = {'uri': 'uri', 'version': 'version'}
     _toPy = {'uri': 'uri', 'version': 'version'}
-    def __init__(self, uri=None, version=None):
+    def __init__(self, uri=None, version=None, **unknown_fields):
         '''
         uri : str
         version : str
@@ -6212,7 +6279,7 @@ class SerializedModelTools(Type):
 class SetConstraints(Type):
     _toSchema = {'application': 'application', 'constraints': 'constraints'}
     _toPy = {'application': 'application', 'constraints': 'constraints'}
-    def __init__(self, application=None, constraints=None):
+    def __init__(self, application=None, constraints=None, **unknown_fields):
         '''
         application : str
         constraints : Value
@@ -6225,7 +6292,7 @@ class SetConstraints(Type):
 class SetMachineBlockDevices(Type):
     _toSchema = {'machine_block_devices': 'machine-block-devices'}
     _toPy = {'machine-block-devices': 'machine_block_devices'}
-    def __init__(self, machine_block_devices=None):
+    def __init__(self, machine_block_devices=None, **unknown_fields):
         '''
         machine_block_devices : typing.Sequence<+T_co>[~MachineBlockDevices]<~MachineBlockDevices>
         '''
@@ -6236,7 +6303,7 @@ class SetMachineBlockDevices(Type):
 class SetMachineNetworkConfig(Type):
     _toSchema = {'config': 'config', 'tag': 'tag'}
     _toPy = {'config': 'config', 'tag': 'tag'}
-    def __init__(self, config=None, tag=None):
+    def __init__(self, config=None, tag=None, **unknown_fields):
         '''
         config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
         tag : str
@@ -6249,7 +6316,7 @@ class SetMachineNetworkConfig(Type):
 class SetMachinesAddresses(Type):
     _toSchema = {'machine_addresses': 'machine-addresses'}
     _toPy = {'machine-addresses': 'machine_addresses'}
-    def __init__(self, machine_addresses=None):
+    def __init__(self, machine_addresses=None, **unknown_fields):
         '''
         machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses>
         '''
@@ -6260,7 +6327,7 @@ class SetMachinesAddresses(Type):
 class SetMigrationPhaseArgs(Type):
     _toSchema = {'phase': 'phase'}
     _toPy = {'phase': 'phase'}
-    def __init__(self, phase=None):
+    def __init__(self, phase=None, **unknown_fields):
         '''
         phase : str
         '''
@@ -6271,7 +6338,7 @@ class SetMigrationPhaseArgs(Type):
 class SetMigrationStatusMessageArgs(Type):
     _toSchema = {'message': 'message'}
     _toPy = {'message': 'message'}
-    def __init__(self, message=None):
+    def __init__(self, message=None, **unknown_fields):
         '''
         message : str
         '''
@@ -6282,7 +6349,7 @@ class SetMigrationStatusMessageArgs(Type):
 class SetModelAgentVersion(Type):
     _toSchema = {'version': 'version'}
     _toPy = {'version': 'version'}
-    def __init__(self, version=None):
+    def __init__(self, version=None, **unknown_fields):
         '''
         version : Number
         '''
@@ -6293,7 +6360,7 @@ class SetModelAgentVersion(Type):
 class SetModelDefaults(Type):
     _toSchema = {'config': 'config'}
     _toPy = {'config': 'config'}
-    def __init__(self, config=None):
+    def __init__(self, config=None, **unknown_fields):
         '''
         config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues>
         '''
@@ -6304,7 +6371,7 @@ class SetModelDefaults(Type):
 class SetPayloadStatusArg(Type):
     _toSchema = {'entity': 'Entity', 'status': 'status'}
     _toPy = {'Entity': 'entity', 'status': 'status'}
-    def __init__(self, entity=None, status=None):
+    def __init__(self, entity=None, status=None, **unknown_fields):
         '''
         entity : Entity
         status : str
@@ -6317,7 +6384,7 @@ class SetPayloadStatusArg(Type):
 class SetPayloadStatusArgs(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~SetPayloadStatusArg]<~SetPayloadStatusArg>
         '''
@@ -6328,7 +6395,7 @@ class SetPayloadStatusArgs(Type):
 class SetStatus(Type):
     _toSchema = {'entities': 'entities'}
     _toPy = {'entities': 'entities'}
-    def __init__(self, entities=None):
+    def __init__(self, entities=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs>
         '''
@@ -6339,7 +6406,7 @@ class SetStatus(Type):
 class SetStatusArg(Type):
     _toSchema = {'entity': 'Entity', 'status': 'status'}
     _toPy = {'Entity': 'entity', 'status': 'status'}
-    def __init__(self, entity=None, status=None):
+    def __init__(self, entity=None, status=None, **unknown_fields):
         '''
         entity : Entity
         status : str
@@ -6352,7 +6419,7 @@ class SetStatusArg(Type):
 class SetStatusArgs(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~SetStatusArg]<~SetStatusArg>
         '''
@@ -6363,7 +6430,7 @@ class SetStatusArgs(Type):
 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):
+    def __init__(self, ftp=None, http=None, https=None, noproxy=None, **unknown_fields):
         '''
         ftp : str
         http : str
@@ -6380,7 +6447,7 @@ class Settings(Type):
 class SettingsResult(Type):
     _toSchema = {'error': 'error', 'settings': 'settings'}
     _toPy = {'error': 'error', 'settings': 'settings'}
-    def __init__(self, error=None, settings=None):
+    def __init__(self, error=None, settings=None, **unknown_fields):
         '''
         error : Error
         settings : typing.Mapping<~KT, +VT_co>[str, str]
@@ -6393,7 +6460,7 @@ class SettingsResult(Type):
 class SettingsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult>
         '''
@@ -6404,7 +6471,7 @@ class SettingsResults(Type):
 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):
+    def __init__(self, controller_tag=None, duration=None, model_tag=None, **unknown_fields):
         '''
         controller_tag : str
         duration : int
@@ -6419,7 +6486,7 @@ class SingularClaim(Type):
 class SingularClaims(Type):
     _toSchema = {'claims': 'claims'}
     _toPy = {'claims': 'claims'}
-    def __init__(self, claims=None):
+    def __init__(self, claims=None, **unknown_fields):
         '''
         claims : typing.Sequence<+T_co>[~SingularClaim]<~SingularClaim>
         '''
@@ -6430,7 +6497,7 @@ class SingularClaims(Type):
 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):
+    def __init__(self, error=None, name=None, subnets=None, **unknown_fields):
         '''
         error : Error
         name : str
@@ -6445,7 +6512,7 @@ class Space(Type):
 class SpaceResult(Type):
     _toSchema = {'error': 'error', 'tag': 'tag'}
     _toPy = {'error': 'error', 'tag': 'tag'}
-    def __init__(self, error=None, tag=None):
+    def __init__(self, error=None, tag=None, **unknown_fields):
         '''
         error : Error
         tag : str
@@ -6458,7 +6525,7 @@ class SpaceResult(Type):
 class SpaceResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~SpaceResult]<~SpaceResult>
         '''
@@ -6469,7 +6536,7 @@ class SpaceResults(Type):
 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):
+    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
@@ -6492,7 +6559,7 @@ class StateServingInfo(Type):
 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):
+    def __init__(self, date=None, delta=None, size=None, **unknown_fields):
         '''
         date : str
         delta : int
@@ -6507,7 +6574,7 @@ class StatusHistoryFilter(Type):
 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):
+    def __init__(self, max_history_mb=None, max_history_time=None, **unknown_fields):
         '''
         max_history_mb : int
         max_history_time : int
@@ -6520,7 +6587,7 @@ class StatusHistoryPruneArgs(Type):
 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):
+    def __init__(self, filter_=None, historykind=None, size=None, tag=None, **unknown_fields):
         '''
         filter_ : StatusHistoryFilter
         historykind : str
@@ -6537,7 +6604,7 @@ class StatusHistoryRequest(Type):
 class StatusHistoryRequests(Type):
     _toSchema = {'requests': 'requests'}
     _toPy = {'requests': 'requests'}
-    def __init__(self, requests=None):
+    def __init__(self, requests=None, **unknown_fields):
         '''
         requests : typing.Sequence<+T_co>[~StatusHistoryRequest]<~StatusHistoryRequest>
         '''
@@ -6548,7 +6615,7 @@ class StatusHistoryRequests(Type):
 class StatusHistoryResult(Type):
     _toSchema = {'error': 'error', 'history': 'history'}
     _toPy = {'error': 'error', 'history': 'history'}
-    def __init__(self, error=None, history=None):
+    def __init__(self, error=None, history=None, **unknown_fields):
         '''
         error : Error
         history : History
@@ -6561,7 +6628,7 @@ class StatusHistoryResult(Type):
 class StatusHistoryResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StatusHistoryResult]<~StatusHistoryResult>
         '''
@@ -6572,7 +6639,7 @@ class StatusHistoryResults(Type):
 class StatusParams(Type):
     _toSchema = {'patterns': 'patterns'}
     _toPy = {'patterns': 'patterns'}
-    def __init__(self, patterns=None):
+    def __init__(self, patterns=None, **unknown_fields):
         '''
         patterns : typing.Sequence<+T_co>[str]
         '''
@@ -6583,7 +6650,7 @@ class StatusParams(Type):
 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):
+    def __init__(self, data=None, error=None, id_=None, info=None, life=None, since=None, status=None, **unknown_fields):
         '''
         data : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         error : Error
@@ -6606,7 +6673,7 @@ class StatusResult(Type):
 class StatusResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StatusResult]<~StatusResult>
         '''
@@ -6617,7 +6684,7 @@ class StatusResults(Type):
 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):
+    def __init__(self, name=None, storage=None, unit=None, **unknown_fields):
         '''
         name : str
         storage : StorageConstraints
@@ -6632,7 +6699,7 @@ class StorageAddParams(Type):
 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):
+    def __init__(self, kind=None, life=None, location=None, owner_tag=None, storage_tag=None, unit_tag=None, **unknown_fields):
         '''
         kind : int
         life : str
@@ -6653,7 +6720,7 @@ class StorageAttachment(Type):
 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):
+    def __init__(self, location=None, machine_tag=None, storage_tag=None, unit_tag=None, **unknown_fields):
         '''
         location : str
         machine_tag : str
@@ -6670,7 +6737,7 @@ class StorageAttachmentDetails(Type):
 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):
+    def __init__(self, storage_tag=None, unit_tag=None, **unknown_fields):
         '''
         storage_tag : str
         unit_tag : str
@@ -6683,7 +6750,7 @@ class StorageAttachmentId(Type):
 class StorageAttachmentIds(Type):
     _toSchema = {'ids': 'ids'}
     _toPy = {'ids': 'ids'}
-    def __init__(self, ids=None):
+    def __init__(self, ids=None, **unknown_fields):
         '''
         ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId>
         '''
@@ -6694,7 +6761,7 @@ class StorageAttachmentIds(Type):
 class StorageAttachmentIdsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : StorageAttachmentIds
@@ -6707,7 +6774,7 @@ class StorageAttachmentIdsResult(Type):
 class StorageAttachmentIdsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult>
         '''
@@ -6718,7 +6785,7 @@ class StorageAttachmentIdsResults(Type):
 class StorageAttachmentResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : StorageAttachment
@@ -6731,7 +6798,7 @@ class StorageAttachmentResult(Type):
 class StorageAttachmentResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult>
         '''
@@ -6742,7 +6809,7 @@ class StorageAttachmentResults(Type):
 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):
+    def __init__(self, count=None, pool=None, size=None, **unknown_fields):
         '''
         count : int
         pool : str
@@ -6757,7 +6824,7 @@ class StorageConstraints(Type):
 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):
+    def __init__(self, attachments=None, kind=None, owner_tag=None, persistent=None, status=None, storage_tag=None, **unknown_fields):
         '''
         attachments : typing.Mapping<~KT, +VT_co>[str, ~StorageAttachmentDetails]<~StorageAttachmentDetails>
         kind : int
@@ -6778,7 +6845,7 @@ class StorageDetails(Type):
 class StorageDetailsListResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Sequence<+T_co>[~StorageDetails]<~StorageDetails>
@@ -6791,7 +6858,7 @@ class StorageDetailsListResult(Type):
 class StorageDetailsListResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StorageDetailsListResult]<~StorageDetailsListResult>
         '''
@@ -6802,7 +6869,7 @@ class StorageDetailsListResults(Type):
 class StorageDetailsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : StorageDetails
@@ -6815,7 +6882,7 @@ class StorageDetailsResult(Type):
 class StorageDetailsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StorageDetailsResult]<~StorageDetailsResult>
         '''
@@ -6826,7 +6893,7 @@ class StorageDetailsResults(Type):
 class StorageFilter(Type):
     _toSchema = {}
     _toPy = {}
-    def __init__(self):
+    def __init__(self, **unknown_fields):
         '''
 
         '''
@@ -6837,7 +6904,7 @@ class StorageFilter(Type):
 class StorageFilters(Type):
     _toSchema = {'filters': 'filters'}
     _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
+    def __init__(self, filters=None, **unknown_fields):
         '''
         filters : typing.Sequence<+T_co>[~StorageFilter]<~StorageFilter>
         '''
@@ -6848,7 +6915,7 @@ class StorageFilters(Type):
 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):
+    def __init__(self, attrs=None, name=None, provider=None, **unknown_fields):
         '''
         attrs : typing.Mapping<~KT, +VT_co>[str, typing.Any]
         name : str
@@ -6863,7 +6930,7 @@ class StoragePool(Type):
 class StoragePoolFilter(Type):
     _toSchema = {'names': 'names', 'providers': 'providers'}
     _toPy = {'names': 'names', 'providers': 'providers'}
-    def __init__(self, names=None, providers=None):
+    def __init__(self, names=None, providers=None, **unknown_fields):
         '''
         names : typing.Sequence<+T_co>[str]
         providers : typing.Sequence<+T_co>[str]
@@ -6876,7 +6943,7 @@ class StoragePoolFilter(Type):
 class StoragePoolFilters(Type):
     _toSchema = {'filters': 'filters'}
     _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
+    def __init__(self, filters=None, **unknown_fields):
         '''
         filters : typing.Sequence<+T_co>[~StoragePoolFilter]<~StoragePoolFilter>
         '''
@@ -6887,7 +6954,7 @@ class StoragePoolFilters(Type):
 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):
+    def __init__(self, error=None, storage_pools=None, **unknown_fields):
         '''
         error : Error
         storage_pools : typing.Sequence<+T_co>[~StoragePool]<~StoragePool>
@@ -6900,7 +6967,7 @@ class StoragePoolsResult(Type):
 class StoragePoolsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StoragePoolsResult]<~StoragePoolsResult>
         '''
@@ -6911,7 +6978,7 @@ class StoragePoolsResults(Type):
 class StoragesAddParams(Type):
     _toSchema = {'storages': 'storages'}
     _toPy = {'storages': 'storages'}
-    def __init__(self, storages=None):
+    def __init__(self, storages=None, **unknown_fields):
         '''
         storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams>
         '''
@@ -6922,7 +6989,7 @@ class StoragesAddParams(Type):
 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):
+    def __init__(self, error=None, ok=None, result=None, **unknown_fields):
         '''
         error : Error
         ok : bool
@@ -6937,7 +7004,7 @@ class StringBoolResult(Type):
 class StringBoolResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult>
         '''
@@ -6948,7 +7015,7 @@ class StringBoolResults(Type):
 class StringResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : str
@@ -6961,7 +7028,7 @@ class StringResult(Type):
 class StringResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StringResult]<~StringResult>
         '''
@@ -6972,7 +7039,7 @@ class StringResults(Type):
 class StringsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Sequence<+T_co>[str]
@@ -6985,7 +7052,7 @@ class StringsResult(Type):
 class StringsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StringsResult]<~StringsResult>
         '''
@@ -6996,7 +7063,7 @@ class StringsResults(Type):
 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):
+    def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields):
         '''
         changes : typing.Sequence<+T_co>[str]
         error : Error
@@ -7011,7 +7078,7 @@ class StringsWatchResult(Type):
 class StringsWatchResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult>
         '''
@@ -7022,7 +7089,7 @@ class StringsWatchResults(Type):
 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):
+    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
@@ -7045,7 +7112,7 @@ class Subnet(Type):
 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):
+    def __init__(self, space_tag=None, zone=None, **unknown_fields):
         '''
         space_tag : str
         zone : str
@@ -7058,7 +7125,7 @@ class SubnetsFilters(Type):
 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):
+    def __init__(self, sha256=None, size=None, url=None, version=None, **unknown_fields):
         '''
         sha256 : str
         size : int
@@ -7075,7 +7142,7 @@ class Tools(Type):
 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):
+    def __init__(self, disable_ssl_hostname_verification=None, error=None, tools=None, **unknown_fields):
         '''
         disable_ssl_hostname_verification : bool
         error : Error
@@ -7090,7 +7157,7 @@ class ToolsResult(Type):
 class ToolsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult>
         '''
@@ -7101,7 +7168,7 @@ class ToolsResults(Type):
 class TrackArgs(Type):
     _toSchema = {'payloads': 'payloads'}
     _toPy = {'payloads': 'payloads'}
-    def __init__(self, payloads=None):
+    def __init__(self, payloads=None, **unknown_fields):
         '''
         payloads : typing.Sequence<+T_co>[~Payload]<~Payload>
         '''
@@ -7112,7 +7179,7 @@ class TrackArgs(Type):
 class TrackPayloadArgs(Type):
     _toSchema = {'payloads': 'payloads'}
     _toPy = {'payloads': 'payloads'}
-    def __init__(self, payloads=None):
+    def __init__(self, payloads=None, **unknown_fields):
         '''
         payloads : typing.Sequence<+T_co>[~Payload]<~Payload>
         '''
@@ -7123,7 +7190,7 @@ class TrackPayloadArgs(Type):
 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):
+    def __init__(self, global_name=None, is_system=None, life=None, name=None, uuid=None, **unknown_fields):
         '''
         global_name : str
         is_system : bool
@@ -7142,7 +7209,7 @@ class UndertakerModelInfo(Type):
 class UndertakerModelInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : UndertakerModelInfo
@@ -7155,7 +7222,7 @@ class UndertakerModelInfoResult(Type):
 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):
+    def __init__(self, binding_name=None, unit_tag=None, **unknown_fields):
         '''
         binding_name : str
         unit_tag : str
@@ -7168,7 +7235,7 @@ class UnitNetworkConfig(Type):
 class UnitNetworkConfigResult(Type):
     _toSchema = {'error': 'error', 'info': 'info'}
     _toPy = {'error': 'error', 'info': 'info'}
-    def __init__(self, error=None, info=None):
+    def __init__(self, error=None, info=None, **unknown_fields):
         '''
         error : Error
         info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig>
@@ -7181,7 +7248,7 @@ class UnitNetworkConfigResult(Type):
 class UnitNetworkConfigResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult>
         '''
@@ -7192,7 +7259,7 @@ class UnitNetworkConfigResults(Type):
 class UnitResourceResult(Type):
     _toSchema = {'errorresult': 'ErrorResult', 'resource': 'resource'}
     _toPy = {'ErrorResult': 'errorresult', 'resource': 'resource'}
-    def __init__(self, errorresult=None, resource=None):
+    def __init__(self, errorresult=None, resource=None, **unknown_fields):
         '''
         errorresult : ErrorResult
         resource : Resource
@@ -7205,7 +7272,7 @@ class UnitResourceResult(Type):
 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):
+    def __init__(self, entity=None, download_progress=None, resources=None, **unknown_fields):
         '''
         entity : Entity
         download_progress : typing.Mapping<~KT, +VT_co>[str, int]
@@ -7220,7 +7287,7 @@ class UnitResources(Type):
 class UnitResourcesResult(Type):
     _toSchema = {'errorresult': 'ErrorResult', 'resources': 'resources'}
     _toPy = {'ErrorResult': 'errorresult', 'resources': 'resources'}
-    def __init__(self, errorresult=None, resources=None):
+    def __init__(self, errorresult=None, resources=None, **unknown_fields):
         '''
         errorresult : ErrorResult
         resources : typing.Sequence<+T_co>[~UnitResourceResult]<~UnitResourceResult>
@@ -7233,7 +7300,7 @@ class UnitResourcesResult(Type):
 class UnitSettings(Type):
     _toSchema = {'version': 'version'}
     _toPy = {'version': 'version'}
-    def __init__(self, version=None):
+    def __init__(self, version=None, **unknown_fields):
         '''
         version : int
         '''
@@ -7244,7 +7311,7 @@ class UnitSettings(Type):
 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):
+    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
@@ -7271,7 +7338,7 @@ class UnitStatus(Type):
 class UnitsNetworkConfig(Type):
     _toSchema = {'args': 'args'}
     _toPy = {'args': 'args'}
-    def __init__(self, args=None):
+    def __init__(self, args=None, **unknown_fields):
         '''
         args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig>
         '''
@@ -7282,7 +7349,7 @@ class UnitsNetworkConfig(Type):
 class UnsetModelDefaults(Type):
     _toSchema = {'keys': 'keys'}
     _toPy = {'keys': 'keys'}
-    def __init__(self, keys=None):
+    def __init__(self, keys=None, **unknown_fields):
         '''
         keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys>
         '''
@@ -7293,7 +7360,7 @@ class UnsetModelDefaults(Type):
 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):
+    def __init__(self, enable_os_refresh_update=None, enable_os_upgrade=None, **unknown_fields):
         '''
         enable_os_refresh_update : bool
         enable_os_upgrade : bool
@@ -7306,7 +7373,7 @@ class UpdateBehavior(Type):
 class UpdateCloudCredential(Type):
     _toSchema = {'credential': 'credential', 'tag': 'tag'}
     _toPy = {'credential': 'credential', 'tag': 'tag'}
-    def __init__(self, credential=None, tag=None):
+    def __init__(self, credential=None, tag=None, **unknown_fields):
         '''
         credential : CloudCredential
         tag : str
@@ -7319,7 +7386,7 @@ class UpdateCloudCredential(Type):
 class UpdateCloudCredentials(Type):
     _toSchema = {'credentials': 'credentials'}
     _toPy = {'credentials': 'credentials'}
-    def __init__(self, credentials=None):
+    def __init__(self, credentials=None, **unknown_fields):
         '''
         credentials : typing.Sequence<+T_co>[~UpdateCloudCredential]<~UpdateCloudCredential>
         '''
@@ -7330,7 +7397,7 @@ class UpdateCloudCredentials(Type):
 class UpgradeMongoParams(Type):
     _toSchema = {'target': 'target'}
     _toPy = {'target': 'target'}
-    def __init__(self, target=None):
+    def __init__(self, target=None, **unknown_fields):
         '''
         target : MongoVersion
         '''
@@ -7341,7 +7408,7 @@ class UpgradeMongoParams(Type):
 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):
+    def __init__(self, access=None, user_tag=None, **unknown_fields):
         '''
         access : str
         user_tag : str
@@ -7354,7 +7421,7 @@ class UserAccess(Type):
 class UserAccessResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : UserAccess
@@ -7367,7 +7434,7 @@ class UserAccessResult(Type):
 class UserAccessResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~UserAccessResult]<~UserAccessResult>
         '''
@@ -7378,7 +7445,7 @@ class UserAccessResults(Type):
 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):
+    def __init__(self, cloud_tag=None, user_tag=None, **unknown_fields):
         '''
         cloud_tag : str
         user_tag : str
@@ -7391,7 +7458,7 @@ class UserCloud(Type):
 class UserClouds(Type):
     _toSchema = {'user_clouds': 'user-clouds'}
     _toPy = {'user-clouds': 'user_clouds'}
-    def __init__(self, user_clouds=None):
+    def __init__(self, user_clouds=None, **unknown_fields):
         '''
         user_clouds : typing.Sequence<+T_co>[~UserCloud]<~UserCloud>
         '''
@@ -7402,7 +7469,7 @@ class UserClouds(Type):
 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):
+    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
@@ -7425,7 +7492,7 @@ class UserInfo(Type):
 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):
+    def __init__(self, entities=None, include_disabled=None, **unknown_fields):
         '''
         entities : typing.Sequence<+T_co>[~Entity]<~Entity>
         include_disabled : bool
@@ -7438,7 +7505,7 @@ class UserInfoRequest(Type):
 class UserInfoResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : UserInfo
@@ -7451,7 +7518,7 @@ class UserInfoResult(Type):
 class UserInfoResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~UserInfoResult]<~UserInfoResult>
         '''
@@ -7462,7 +7529,7 @@ class UserInfoResults(Type):
 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):
+    def __init__(self, last_connection=None, model=None, **unknown_fields):
         '''
         last_connection : str
         model : Model
@@ -7475,7 +7542,7 @@ class UserModel(Type):
 class UserModelList(Type):
     _toSchema = {'user_models': 'user-models'}
     _toPy = {'user-models': 'user_models'}
-    def __init__(self, user_models=None):
+    def __init__(self, user_models=None, **unknown_fields):
         '''
         user_models : typing.Sequence<+T_co>[~UserModel]<~UserModel>
         '''
@@ -7486,7 +7553,7 @@ class UserModelList(Type):
 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):
+    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
@@ -7515,7 +7582,7 @@ class Value(Type):
 class Version(Type):
     _toSchema = {'version': 'version'}
     _toPy = {'version': 'version'}
-    def __init__(self, version=None):
+    def __init__(self, version=None, **unknown_fields):
         '''
         version : Binary
         '''
@@ -7526,7 +7593,7 @@ class Version(Type):
 class VersionResult(Type):
     _toSchema = {'error': 'error', 'version': 'version'}
     _toPy = {'error': 'error', 'version': 'version'}
-    def __init__(self, error=None, version=None):
+    def __init__(self, error=None, version=None, **unknown_fields):
         '''
         error : Error
         version : Number
@@ -7539,7 +7606,7 @@ class VersionResult(Type):
 class VersionResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VersionResult]<~VersionResult>
         '''
@@ -7550,7 +7617,7 @@ class VersionResults(Type):
 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):
+    def __init__(self, info=None, volume_tag=None, **unknown_fields):
         '''
         info : VolumeInfo
         volume_tag : str
@@ -7563,7 +7630,7 @@ class Volume(Type):
 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):
+    def __init__(self, info=None, machine_tag=None, volume_tag=None, **unknown_fields):
         '''
         info : VolumeAttachmentInfo
         machine_tag : str
@@ -7578,7 +7645,7 @@ class VolumeAttachment(Type):
 class VolumeAttachmentDetails(Type):
     _toSchema = {'life': 'life', 'volumeattachmentinfo': 'VolumeAttachmentInfo'}
     _toPy = {'VolumeAttachmentInfo': 'volumeattachmentinfo', 'life': 'life'}
-    def __init__(self, volumeattachmentinfo=None, life=None):
+    def __init__(self, volumeattachmentinfo=None, life=None, **unknown_fields):
         '''
         volumeattachmentinfo : VolumeAttachmentInfo
         life : str
@@ -7591,7 +7658,7 @@ class VolumeAttachmentDetails(Type):
 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):
+    def __init__(self, bus_address=None, device_link=None, device_name=None, read_only=None, **unknown_fields):
         '''
         bus_address : str
         device_link : str
@@ -7608,7 +7675,7 @@ class VolumeAttachmentInfo(Type):
 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):
+    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
@@ -7629,7 +7696,7 @@ class VolumeAttachmentParams(Type):
 class VolumeAttachmentParamsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : VolumeAttachmentParams
@@ -7642,7 +7709,7 @@ class VolumeAttachmentParamsResult(Type):
 class VolumeAttachmentParamsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VolumeAttachmentParamsResult]<~VolumeAttachmentParamsResult>
         '''
@@ -7653,7 +7720,7 @@ class VolumeAttachmentParamsResults(Type):
 class VolumeAttachmentResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : VolumeAttachment
@@ -7666,7 +7733,7 @@ class VolumeAttachmentResult(Type):
 class VolumeAttachmentResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VolumeAttachmentResult]<~VolumeAttachmentResult>
         '''
@@ -7677,7 +7744,7 @@ class VolumeAttachmentResults(Type):
 class VolumeAttachments(Type):
     _toSchema = {'volume_attachments': 'volume-attachments'}
     _toPy = {'volume-attachments': 'volume_attachments'}
-    def __init__(self, volume_attachments=None):
+    def __init__(self, volume_attachments=None, **unknown_fields):
         '''
         volume_attachments : typing.Sequence<+T_co>[~VolumeAttachment]<~VolumeAttachment>
         '''
@@ -7688,7 +7755,7 @@ class VolumeAttachments(Type):
 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):
+    def __init__(self, info=None, machine_attachments=None, status=None, storage=None, volume_tag=None, **unknown_fields):
         '''
         info : VolumeInfo
         machine_attachments : typing.Mapping<~KT, +VT_co>[str, ~VolumeAttachmentInfo]<~VolumeAttachmentInfo>
@@ -7707,7 +7774,7 @@ class VolumeDetails(Type):
 class VolumeDetailsListResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : typing.Sequence<+T_co>[~VolumeDetails]<~VolumeDetails>
@@ -7720,7 +7787,7 @@ class VolumeDetailsListResult(Type):
 class VolumeDetailsListResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VolumeDetailsListResult]<~VolumeDetailsListResult>
         '''
@@ -7731,7 +7798,7 @@ class VolumeDetailsListResults(Type):
 class VolumeFilter(Type):
     _toSchema = {'machines': 'machines'}
     _toPy = {'machines': 'machines'}
-    def __init__(self, machines=None):
+    def __init__(self, machines=None, **unknown_fields):
         '''
         machines : typing.Sequence<+T_co>[str]
         '''
@@ -7742,7 +7809,7 @@ class VolumeFilter(Type):
 class VolumeFilters(Type):
     _toSchema = {'filters': 'filters'}
     _toPy = {'filters': 'filters'}
-    def __init__(self, filters=None):
+    def __init__(self, filters=None, **unknown_fields):
         '''
         filters : typing.Sequence<+T_co>[~VolumeFilter]<~VolumeFilter>
         '''
@@ -7753,7 +7820,7 @@ class VolumeFilters(Type):
 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):
+    def __init__(self, hardware_id=None, persistent=None, size=None, volume_id=None, **unknown_fields):
         '''
         hardware_id : str
         persistent : bool
@@ -7770,7 +7837,7 @@ class VolumeInfo(Type):
 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):
+    def __init__(self, attachment=None, attributes=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields):
         '''
         attachment : VolumeAttachmentParams
         attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any]
@@ -7791,7 +7858,7 @@ class VolumeParams(Type):
 class VolumeParamsResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : VolumeParams
@@ -7804,7 +7871,7 @@ class VolumeParamsResult(Type):
 class VolumeParamsResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VolumeParamsResult]<~VolumeParamsResult>
         '''
@@ -7815,7 +7882,7 @@ class VolumeParamsResults(Type):
 class VolumeResult(Type):
     _toSchema = {'error': 'error', 'result': 'result'}
     _toPy = {'error': 'error', 'result': 'result'}
-    def __init__(self, error=None, result=None):
+    def __init__(self, error=None, result=None, **unknown_fields):
         '''
         error : Error
         result : Volume
@@ -7828,7 +7895,7 @@ class VolumeResult(Type):
 class VolumeResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~VolumeResult]<~VolumeResult>
         '''
@@ -7839,7 +7906,7 @@ class VolumeResults(Type):
 class Volumes(Type):
     _toSchema = {'volumes': 'volumes'}
     _toPy = {'volumes': 'volumes'}
-    def __init__(self, volumes=None):
+    def __init__(self, volumes=None, **unknown_fields):
         '''
         volumes : typing.Sequence<+T_co>[~Volume]<~Volume>
         '''
@@ -7850,7 +7917,7 @@ class Volumes(Type):
 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):
+    def __init__(self, container_type=None, machine_tag=None, **unknown_fields):
         '''
         container_type : str
         machine_tag : str
@@ -7863,7 +7930,7 @@ class WatchContainer(Type):
 class WatchContainers(Type):
     _toSchema = {'params': 'params'}
     _toPy = {'params': 'params'}
-    def __init__(self, params=None):
+    def __init__(self, params=None, **unknown_fields):
         '''
         params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer>
         '''
@@ -7874,7 +7941,7 @@ class WatchContainers(Type):
 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):
+    def __init__(self, available=None, error=None, name=None, **unknown_fields):
         '''
         available : bool
         error : Error
@@ -7889,7 +7956,7 @@ class ZoneResult(Type):
 class ZoneResults(Type):
     _toSchema = {'results': 'results'}
     _toPy = {'results': 'results'}
-    def __init__(self, results=None):
+    def __init__(self, results=None, **unknown_fields):
         '''
         results : typing.Sequence<+T_co>[~ZoneResult]<~ZoneResult>
         '''
index 00dd26a..c959e01 100644 (file)
@@ -267,7 +267,7 @@ def buildTypes(schema, capture):
 class {}(Type):
     _toSchema = {}
     _toPy = {}
-    def __init__(self{}{}):
+    def __init__(self{}{}, **unknown_fields):
         '''
 {}
         '''""".format(
@@ -519,7 +519,10 @@ class Type:
         if isinstance(data, cls):
             return data
         if isinstance(data, str):
-            data = json.loads(data)
+            try:
+                data = json.loads(data)
+            except json.JSONDecodeError:
+                raise
         d = {}
         for k, v in (data or {}).items():
             d[cls._toPy.get(k, k)] = v
index e7e6d34..6ad47e9 100644 (file)
@@ -1,16 +1,20 @@
 from collections import namedtuple
+import re
 
 from .facade import ReturnMapping, Type, TypeEncoder
 from .import _client
+from .import _definitions
 
 
 __all__ = [
     'Delta',
+    'Number',
+    'Binary',
 ]
 
 __patches__ = [
     'ResourcesFacade',
-    'AllWatcherFacade'
+    'AllWatcherFacade',
 ]
 
 
@@ -83,6 +87,7 @@ class ResourcesFacade(Type):
         reply = await self.rpc(msg)
         return reply
 
+
 class AllWatcherFacade(Type):
     """
     Patch rpc method of allwatcher to add in 'id' stuff.
@@ -96,5 +101,167 @@ class AllWatcherFacade(Type):
             self.Id = result.watcher_id
 
         msg['Id'] = self.Id
-        result =  await self.connection.rpc(msg, encoder=TypeEncoder)
+        result = await self.connection.rpc(msg, encoder=TypeEncoder)
         return result
+
+
+class Number(_definitions.Number):
+    """
+    This type represents a semver string.
+
+    Because it is not standard JSON, the typical from_json parsing fails and
+    the parsing must be handled specially.
+
+    See https://github.com/juju/version for more info.
+    """
+    numberPat = re.compile(r'^(\d{1,9})\.(\d{1,9})(?:\.|-([a-z]+))(\d{1,9})(\.\d{1,9})?$')  # noqa
+
+    def __init__(self, major=None, minor=None, patch=None, tag=None,
+                 build=None, **unknown_fields):
+        '''
+        major : int
+        minor : int
+        patch : int
+        tag : str
+        build : int
+        '''
+        self.major = int(major or '0')
+        self.minor = int(minor or '0')
+        self.patch = int(patch or '0')
+        self.tag = tag or ''
+        self.build = int(build or '0')
+
+    def __repr__(self):
+        return '<Number major={} minor={} patch={} tag={} build={}>'.format(
+            self.major, self.minor, self.patch, self.tag, self.build)
+
+    def __str__(self):
+        return self.serialize()
+
+    def __eq__(self, other):
+        return (
+            isinstance(other, type(self)) and
+            other.major == self.major and
+            other.minor == self.minor and
+            other.tag == self.tag and
+            other.patch == self.patch and
+            other.build == self.build)
+
+    @classmethod
+    def from_json(cls, data):
+        parsed = None
+        if isinstance(data, cls):
+            return data
+        elif data is None:
+            return cls()
+        elif isinstance(data, dict):
+            parsed = data
+        elif isinstance(data, str):
+            match = cls.numberPat.match(data)
+            if match:
+                parsed = {
+                    'major': match.group(1),
+                    'minor': match.group(2),
+                    'tag': match.group(3),
+                    'patch': match.group(4),
+                    'build': (match.group(5)[1:] if match.group(5)
+                              else 0),
+                }
+        if not parsed:
+            raise TypeError('Unable to parse Number version string: '
+                            '{}'.format(data))
+        d = {}
+        for k, v in parsed.items():
+            d[cls._toPy.get(k, k)] = v
+
+        return cls(**d)
+
+    def serialize(self):
+        s = ""
+        if not self.tag:
+            s = "{}.{}.{}".format(self.major, self.minor, self.patch)
+        else:
+            s = "{}.{}-{}{}".format(self.major, self.minor, self.tag,
+                                    self.patch)
+        if self.build:
+            s = "{}.{}".format(s, self.build)
+        return s
+
+    def to_json(self):
+        return self.serialize()
+
+
+class Binary(_definitions.Binary):
+    """
+    This type represents a semver string with additional series and arch info.
+
+    Because it is not standard JSON, the typical from_json parsing fails and
+    the parsing must be handled specially.
+
+    See https://github.com/juju/version for more info.
+    """
+    binaryPat = re.compile(r'^(\d{1,9})\.(\d{1,9})(?:\.|-([a-z]+))(\d{1,9})(\.\d{1,9})?-([^-]+)-([^-]+)$')  # noqa
+
+    def __init__(self, number=None, series=None, arch=None, **unknown_fields):
+        '''
+        number : Number
+        series : str
+        arch : str
+        '''
+        self.number = Number.from_json(number)
+        self.series = series
+        self.arch = arch
+
+    def __repr__(self):
+        return '<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()
diff --git a/juju/client/schemas-juju-2.2-rc1.json b/juju/client/schemas-juju-2.2-rc1.json
new file mode 100644 (file)
index 0000000..17e841a
--- /dev/null
@@ -0,0 +1,26295 @@
+[
+  {
+    "Name": "Action",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Actions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "ApplicationsCharmsActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ApplicationsCharmActionsResults"
+            }
+          }
+        },
+        "Cancel": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "Enqueue": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Actions"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "FindActionTagsByPrefix": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindTags"
+            },
+            "Result": {
+              "$ref": "#/definitions/FindTagsResults"
+            }
+          }
+        },
+        "FindActionsByNames": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindActionsByNames"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByNames"
+            }
+          }
+        },
+        "ListAll": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
+            }
+          }
+        },
+        "ListCompleted": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
+            }
+          }
+        },
+        "ListPending": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
+            }
+          }
+        },
+        "ListRunning": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
+            }
+          }
+        },
+        "Run": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RunParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "RunOnAllMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RunParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Action": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "parameters": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "receiver": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "receiver",
+            "name"
+          ]
+        },
+        "ActionResult": {
+          "type": "object",
+          "properties": {
+            "action": {
+              "$ref": "#/definitions/Action"
+            },
+            "completed": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "enqueued": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "message": {
+              "type": "string"
+            },
+            "output": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "started": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionSpec": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "params": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "description",
+            "params"
+          ]
+        },
+        "Actions": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Action"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByName": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByNames": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionsByName"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByReceiver": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "receiver": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByReceivers": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionsByReceiver"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ApplicationCharmActionsResult": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ActionSpec"
+                }
+              }
+            },
+            "application-tag": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ApplicationsCharmActionsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ApplicationCharmActionsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "FindActionsByNames": {
+          "type": "object",
+          "properties": {
+            "names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FindTags": {
+          "type": "object",
+          "properties": {
+            "prefixes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "prefixes"
+          ]
+        },
+        "FindTagsResults": {
+          "type": "object",
+          "properties": {
+            "matches": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/definitions/Entity"
+                  }
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "matches"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "RunParams": {
+          "type": "object",
+          "properties": {
+            "applications": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "commands": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "timeout": {
+              "type": "integer"
+            },
+            "units": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "commands",
+            "timeout"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Agent",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ClearReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
+        "ControllerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ControllerConfigResult"
+            }
+          }
+        },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
+        "GetEntities": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/AgentGetEntitiesResults"
+            }
+          }
+        },
+        "IsMaster": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/IsMasterResult"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "SetPasswords": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StateServingInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StateServingInfo"
+            }
+          }
+        },
+        "WatchCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AgentGetEntitiesResult": {
+          "type": "object",
+          "properties": {
+            "container-type": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life",
+            "jobs",
+            "container-type"
+          ]
+        },
+        "AgentGetEntitiesResults": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AgentGetEntitiesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ControllerConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityPassword": {
+          "type": "object",
+          "properties": {
+            "password": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "password"
+          ]
+        },
+        "EntityPasswords": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "IsMasterResult": {
+          "type": "object",
+          "properties": {
+            "master": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "master"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StateServingInfo": {
+          "type": "object",
+          "properties": {
+            "api-port": {
+              "type": "integer"
+            },
+            "ca-private-key": {
+              "type": "string"
+            },
+            "cert": {
+              "type": "string"
+            },
+            "private-key": {
+              "type": "string"
+            },
+            "shared-secret": {
+              "type": "string"
+            },
+            "state-port": {
+              "type": "integer"
+            },
+            "system-identity": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "api-port",
+            "state-port",
+            "cert",
+            "private-key",
+            "ca-private-key",
+            "shared-secret",
+            "system-identity"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "AgentTools",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "UpdateToolsAvailable": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "AllModelWatcher",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/AllWatcherNextResults"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "AllWatcherNextResults": {
+          "type": "object",
+          "properties": {
+            "deltas": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Delta"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "deltas"
+          ]
+        },
+        "Delta": {
+          "type": "object",
+          "properties": {
+            "entity": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "removed": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "removed",
+            "entity"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "AllWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/AllWatcherNextResults"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "AllWatcherNextResults": {
+          "type": "object",
+          "properties": {
+            "deltas": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Delta"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "deltas"
+          ]
+        },
+        "Delta": {
+          "type": "object",
+          "properties": {
+            "entity": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "removed": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "removed",
+            "entity"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Annotations",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Get": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/AnnotationsGetResults"
+            }
+          }
+        },
+        "Set": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AnnotationsSet"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AnnotationsGetResult": {
+          "type": "object",
+          "properties": {
+            "annotations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "entity": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entity",
+            "annotations"
+          ]
+        },
+        "AnnotationsGetResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AnnotationsGetResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "AnnotationsSet": {
+          "type": "object",
+          "properties": {
+            "annotations": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityAnnotations"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "annotations"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityAnnotations": {
+          "type": "object",
+          "properties": {
+            "annotations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "entity": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entity",
+            "annotations"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Application",
+    "Version": 4,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddRelation": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddRelation"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddRelationResults"
+            }
+          }
+        },
+        "AddUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddApplicationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddApplicationUnitsResults"
+            }
+          }
+        },
+        "CharmRelations": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationCharmRelations"
+            },
+            "Result": {
+              "$ref": "#/definitions/ApplicationCharmRelationsResults"
+            }
+          }
+        },
+        "Consume": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ConsumeApplicationArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/ConsumeApplicationResults"
+            }
+          }
+        },
+        "Deploy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationsDeploy"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Destroy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationDestroy"
+            }
+          }
+        },
+        "DestroyApplication": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DestroyApplicationResults"
+            }
+          }
+        },
+        "DestroyRelation": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyRelation"
+            }
+          }
+        },
+        "DestroyUnit": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DestroyUnitResults"
+            }
+          }
+        },
+        "DestroyUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyApplicationUnits"
+            }
+          }
+        },
+        "Expose": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationExpose"
+            }
+          }
+        },
+        "Get": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationGet"
+            },
+            "Result": {
+              "$ref": "#/definitions/ApplicationGetResults"
+            }
+          }
+        },
+        "GetCharmURL": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationGet"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "GetConstraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/GetApplicationConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/GetConstraintsResults"
+            }
+          }
+        },
+        "RemoteApplicationInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationURLs"
+            },
+            "Result": {
+              "$ref": "#/definitions/RemoteApplicationInfoResults"
+            }
+          }
+        },
+        "Set": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationSet"
+            }
+          }
+        },
+        "SetCharm": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationSetCharm"
+            }
+          }
+        },
+        "SetConstraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetConstraints"
+            }
+          }
+        },
+        "SetMetricCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationMetricCredentials"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Unexpose": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationUnexpose"
+            }
+          }
+        },
+        "Unset": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationUnset"
+            }
+          }
+        },
+        "Update": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationUpdate"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddApplicationUnits": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "num-units": {
+              "type": "integer"
+            },
+            "placement": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Placement"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "num-units",
+            "placement"
+          ]
+        },
+        "AddApplicationUnitsResults": {
+          "type": "object",
+          "properties": {
+            "units": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "units"
+          ]
+        },
+        "AddRelation": {
+          "type": "object",
+          "properties": {
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "endpoints"
+          ]
+        },
+        "AddRelationResults": {
+          "type": "object",
+          "properties": {
+            "endpoints": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmRelation"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "endpoints"
+          ]
+        },
+        "ApplicationCharmRelations": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "ApplicationCharmRelationsResults": {
+          "type": "object",
+          "properties": {
+            "charm-relations": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "charm-relations"
+          ]
+        },
+        "ApplicationDeploy": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "channel": {
+              "type": "string"
+            },
+            "charm-url": {
+              "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "config-yaml": {
+              "type": "string"
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "endpoint-bindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "num-units": {
+              "type": "integer"
+            },
+            "placement": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Placement"
+              }
+            },
+            "resources": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "series": {
+              "type": "string"
+            },
+            "storage": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Constraints"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "series",
+            "charm-url",
+            "channel",
+            "num-units",
+            "config-yaml",
+            "constraints"
+          ]
+        },
+        "ApplicationDestroy": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "ApplicationExpose": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "ApplicationGet": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "ApplicationGetResults": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "charm": {
+              "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "charm",
+            "config",
+            "constraints",
+            "series"
+          ]
+        },
+        "ApplicationMetricCredential": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "metrics-credentials": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "metrics-credentials"
+          ]
+        },
+        "ApplicationMetricCredentials": {
+          "type": "object",
+          "properties": {
+            "creds": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ApplicationMetricCredential"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "creds"
+          ]
+        },
+        "ApplicationSet": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "options": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "options"
+          ]
+        },
+        "ApplicationSetCharm": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "channel": {
+              "type": "string"
+            },
+            "charm-url": {
+              "type": "string"
+            },
+            "config-settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "config-settings-yaml": {
+              "type": "string"
+            },
+            "force-series": {
+              "type": "boolean"
+            },
+            "force-units": {
+              "type": "boolean"
+            },
+            "resource-ids": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "storage-constraints": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/StorageConstraints"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "charm-url",
+            "channel",
+            "force-units",
+            "force-series"
+          ]
+        },
+        "ApplicationURLs": {
+          "type": "object",
+          "properties": {
+            "application-urls": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ApplicationUnexpose": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "ApplicationUnset": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "options": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "options"
+          ]
+        },
+        "ApplicationUpdate": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "charm-url": {
+              "type": "string"
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "force-charm-url": {
+              "type": "boolean"
+            },
+            "force-series": {
+              "type": "boolean"
+            },
+            "min-units": {
+              "type": "integer"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "settings-yaml": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "charm-url",
+            "force-charm-url",
+            "force-series",
+            "settings-yaml"
+          ]
+        },
+        "ApplicationsDeploy": {
+          "type": "object",
+          "properties": {
+            "applications": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ApplicationDeploy"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "applications"
+          ]
+        },
+        "CharmRelation": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "optional": {
+              "type": "boolean"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "optional",
+            "limit",
+            "scope"
+          ]
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Count": {
+              "type": "integer"
+            },
+            "Pool": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Pool",
+            "Size",
+            "Count"
+          ]
+        },
+        "ConsumeApplicationArg": {
+          "type": "object",
+          "properties": {
+            "application-alias": {
+              "type": "string"
+            },
+            "application-url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-url"
+          ]
+        },
+        "ConsumeApplicationArgs": {
+          "type": "object",
+          "properties": {
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ConsumeApplicationArg"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ConsumeApplicationResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "local-name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ConsumeApplicationResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ConsumeApplicationResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "DestroyApplicationInfo": {
+          "type": "object",
+          "properties": {
+            "destroyed-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "destroyed-units": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "detached-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyApplicationResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "$ref": "#/definitions/DestroyApplicationInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyApplicationResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DestroyApplicationResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyApplicationUnits": {
+          "type": "object",
+          "properties": {
+            "unit-names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit-names"
+          ]
+        },
+        "DestroyRelation": {
+          "type": "object",
+          "properties": {
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "endpoints"
+          ]
+        },
+        "DestroyUnitInfo": {
+          "type": "object",
+          "properties": {
+            "destroyed-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "detached-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyUnitResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "$ref": "#/definitions/DestroyUnitInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyUnitResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DestroyUnitResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "GetApplicationConstraints": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application"
+          ]
+        },
+        "GetConstraintsResults": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Placement": {
+          "type": "object",
+          "properties": {
+            "directive": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "scope",
+            "directive"
+          ]
+        },
+        "RemoteApplicationInfo": {
+          "type": "object",
+          "properties": {
+            "application-url": {
+              "type": "string"
+            },
+            "description": {
+              "type": "string"
+            },
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RemoteEndpoint"
+              }
+            },
+            "icon-url-path": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "source-model-label": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "name",
+            "description",
+            "application-url",
+            "endpoints",
+            "icon-url-path"
+          ]
+        },
+        "RemoteApplicationInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/RemoteApplicationInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "RemoteApplicationInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RemoteApplicationInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "RemoteEndpoint": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "limit",
+            "scope"
+          ]
+        },
+        "SetConstraints": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "constraints"
+          ]
+        },
+        "StorageConstraints": {
+          "type": "object",
+          "properties": {
+            "count": {
+              "type": "integer"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "ApplicationScaler",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Rescale": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Backups",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Create": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BackupsCreateArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/BackupsMetadataResult"
+            }
+          }
+        },
+        "FinishRestore": {
+          "type": "object"
+        },
+        "Info": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BackupsInfoArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/BackupsMetadataResult"
+            }
+          }
+        },
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BackupsListArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/BackupsListResult"
+            }
+          }
+        },
+        "PrepareRestore": {
+          "type": "object"
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BackupsRemoveArgs"
+            }
+          }
+        },
+        "Restore": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RestoreArgs"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "BackupsCreateArgs": {
+          "type": "object",
+          "properties": {
+            "notes": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "notes"
+          ]
+        },
+        "BackupsInfoArgs": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "BackupsListArgs": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "BackupsListResult": {
+          "type": "object",
+          "properties": {
+            "list": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BackupsMetadataResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "list"
+          ]
+        },
+        "BackupsMetadataResult": {
+          "type": "object",
+          "properties": {
+            "ca-cert": {
+              "type": "string"
+            },
+            "ca-private-key": {
+              "type": "string"
+            },
+            "checksum": {
+              "type": "string"
+            },
+            "checksum-format": {
+              "type": "string"
+            },
+            "finished": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "hostname": {
+              "type": "string"
+            },
+            "id": {
+              "type": "string"
+            },
+            "machine": {
+              "type": "string"
+            },
+            "model": {
+              "type": "string"
+            },
+            "notes": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "started": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "stored": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "checksum",
+            "checksum-format",
+            "size",
+            "stored",
+            "started",
+            "finished",
+            "notes",
+            "model",
+            "machine",
+            "hostname",
+            "version",
+            "series",
+            "ca-cert",
+            "ca-private-key"
+          ]
+        },
+        "BackupsRemoveArgs": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "RestoreArgs": {
+          "type": "object",
+          "properties": {
+            "backup-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "backup-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Block",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BlockResults"
+            }
+          }
+        },
+        "SwitchBlockOff": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BlockSwitchParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        },
+        "SwitchBlockOn": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BlockSwitchParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Block": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string"
+            },
+            "message": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "tag",
+            "type"
+          ]
+        },
+        "BlockResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/Block"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "BlockResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BlockResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "BlockSwitchParams": {
+          "type": "object",
+          "properties": {
+            "message": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Bundle",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetChanges": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BundleChangesParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/BundleChangesResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "BundleChange": {
+          "type": "object",
+          "properties": {
+            "args": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "additionalProperties": true
+              }
+            },
+            "id": {
+              "type": "string"
+            },
+            "method": {
+              "type": "string"
+            },
+            "requires": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "method",
+            "args",
+            "requires"
+          ]
+        },
+        "BundleChangesParams": {
+          "type": "object",
+          "properties": {
+            "yaml": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "yaml"
+          ]
+        },
+        "BundleChangesResults": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BundleChange"
+              }
+            },
+            "errors": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "CharmRevisionUpdater",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "UpdateLatestRevisions": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Charms",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CharmInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmURL"
+            },
+            "Result": {
+              "$ref": "#/definitions/CharmInfo"
+            }
+          }
+        },
+        "IsMetered": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmURL"
+            },
+            "Result": {
+              "$ref": "#/definitions/IsMeteredResult"
+            }
+          }
+        },
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmsList"
+            },
+            "Result": {
+              "$ref": "#/definitions/CharmsListResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "CharmActionSpec": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "params": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "description",
+            "params"
+          ]
+        },
+        "CharmActions": {
+          "type": "object",
+          "properties": {
+            "specs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmActionSpec"
+                }
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "CharmInfo": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "$ref": "#/definitions/CharmActions"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmOption"
+                }
+              }
+            },
+            "meta": {
+              "$ref": "#/definitions/CharmMeta"
+            },
+            "metrics": {
+              "$ref": "#/definitions/CharmMetrics"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "revision",
+            "url",
+            "config"
+          ]
+        },
+        "CharmMeta": {
+          "type": "object",
+          "properties": {
+            "categories": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "description": {
+              "type": "string"
+            },
+            "extra-bindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "min-juju-version": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "payload-classes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmPayloadClass"
+                }
+              }
+            },
+            "peers": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmRelation"
+                }
+              }
+            },
+            "provides": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmRelation"
+                }
+              }
+            },
+            "requires": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmRelation"
+                }
+              }
+            },
+            "resources": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmResourceMeta"
+                }
+              }
+            },
+            "series": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "storage": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmStorage"
+                }
+              }
+            },
+            "subordinate": {
+              "type": "boolean"
+            },
+            "summary": {
+              "type": "string"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "terms": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "summary",
+            "description",
+            "subordinate"
+          ]
+        },
+        "CharmMetric": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "description"
+          ]
+        },
+        "CharmMetrics": {
+          "type": "object",
+          "properties": {
+            "metrics": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/CharmMetric"
+                }
+              }
+            },
+            "plan": {
+              "$ref": "#/definitions/CharmPlan"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "metrics",
+            "plan"
+          ]
+        },
+        "CharmOption": {
+          "type": "object",
+          "properties": {
+            "default": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "description": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type"
+          ]
+        },
+        "CharmPayloadClass": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "type"
+          ]
+        },
+        "CharmPlan": {
+          "type": "object",
+          "properties": {
+            "required": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "required"
+          ]
+        },
+        "CharmRelation": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "optional": {
+              "type": "boolean"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "optional",
+            "limit",
+            "scope"
+          ]
+        },
+        "CharmResourceMeta": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "type",
+            "path",
+            "description"
+          ]
+        },
+        "CharmStorage": {
+          "type": "object",
+          "properties": {
+            "count-max": {
+              "type": "integer"
+            },
+            "count-min": {
+              "type": "integer"
+            },
+            "description": {
+              "type": "string"
+            },
+            "location": {
+              "type": "string"
+            },
+            "minimum-size": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "properties": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "read-only": {
+              "type": "boolean"
+            },
+            "shared": {
+              "type": "boolean"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "description",
+            "type",
+            "shared",
+            "read-only",
+            "count-min",
+            "count-max",
+            "minimum-size"
+          ]
+        },
+        "CharmURL": {
+          "type": "object",
+          "properties": {
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url"
+          ]
+        },
+        "CharmsList": {
+          "type": "object",
+          "properties": {
+            "names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "names"
+          ]
+        },
+        "CharmsListResult": {
+          "type": "object",
+          "properties": {
+            "charm-urls": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "charm-urls"
+          ]
+        },
+        "IsMeteredResult": {
+          "type": "object",
+          "properties": {
+            "metered": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "metered"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Cleaner",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Cleanup": {
+          "type": "object"
+        },
+        "WatchCleanups": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Client",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "AbortCurrentUpgrade": {
+          "type": "object"
+        },
+        "AddCharm": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddCharm"
+            }
+          }
+        },
+        "AddCharmWithAuthorization": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddCharmWithAuthorization"
+            }
+          }
+        },
+        "AddMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
+            }
+          }
+        },
+        "AddMachinesV2": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
+            }
+          }
+        },
+        "AgentVersion": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/AgentVersionResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "DestroyMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyMachines"
+            }
+          }
+        },
+        "FindTools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindToolsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/FindToolsResult"
+            }
+          }
+        },
+        "FullStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StatusParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/FullStatus"
+            }
+          }
+        },
+        "GetBundleChanges": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BundleChangesParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/BundleChangesResults"
+            }
+          }
+        },
+        "GetModelConstraints": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/GetConstraintsResults"
+            }
+          }
+        },
+        "InjectMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
+            }
+          }
+        },
+        "ModelGet": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
+            }
+          }
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelInfo"
+            }
+          }
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSet"
+            }
+          }
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelUnset"
+            }
+          }
+        },
+        "ModelUserInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelUserInfoResults"
+            }
+          }
+        },
+        "PrivateAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/PrivateAddress"
+            },
+            "Result": {
+              "$ref": "#/definitions/PrivateAddressResults"
+            }
+          }
+        },
+        "ProvisioningScript": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ProvisioningScriptParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProvisioningScriptResult"
+            }
+          }
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/PublicAddress"
+            },
+            "Result": {
+              "$ref": "#/definitions/PublicAddressResults"
+            }
+          }
+        },
+        "ResolveCharms": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ResolveCharms"
+            },
+            "Result": {
+              "$ref": "#/definitions/ResolveCharmResults"
+            }
+          }
+        },
+        "Resolved": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Resolved"
+            }
+          }
+        },
+        "RetryProvisioning": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SLALevel": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "SetModelAgentVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetModelAgentVersion"
+            }
+          }
+        },
+        "SetModelConstraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetConstraints"
+            }
+          }
+        },
+        "SetSLALevel": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSLA"
+            }
+          }
+        },
+        "StatusHistory": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StatusHistoryRequests"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusHistoryResults"
+            }
+          }
+        },
+        "WatchAll": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/AllWatcherId"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "AddCharm": {
+          "type": "object",
+          "properties": {
+            "channel": {
+              "type": "string"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url",
+            "channel"
+          ]
+        },
+        "AddCharmWithAuthorization": {
+          "type": "object",
+          "properties": {
+            "channel": {
+              "type": "string"
+            },
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url",
+            "channel",
+            "macaroon"
+          ]
+        },
+        "AddMachineParams": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "container-type": {
+              "type": "string"
+            },
+            "disks": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Constraints"
+              }
+            },
+            "hardware-characteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "nonce": {
+              "type": "string"
+            },
+            "parent-id": {
+              "type": "string"
+            },
+            "placement": {
+              "$ref": "#/definitions/Placement"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "series",
+            "constraints",
+            "jobs",
+            "parent-id",
+            "container-type",
+            "instance-id",
+            "nonce",
+            "hardware-characteristics",
+            "addresses"
+          ]
+        },
+        "AddMachines": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachineParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "AddMachinesResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "machine": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine"
+          ]
+        },
+        "AddMachinesResults": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachinesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machines"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "AgentVersionResult": {
+          "type": "object",
+          "properties": {
+            "version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        },
+        "AllWatcherId": {
+          "type": "object",
+          "properties": {
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "ApplicationStatus": {
+          "type": "object",
+          "properties": {
+            "can-upgrade-to": {
+              "type": "string"
+            },
+            "charm": {
+              "type": "string"
+            },
+            "err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "exposed": {
+              "type": "boolean"
+            },
+            "life": {
+              "type": "string"
+            },
+            "meter-statuses": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MeterStatus"
+                }
+              }
+            },
+            "relations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "series": {
+              "type": "string"
+            },
+            "status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "subordinate-to": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitStatus"
+                }
+              }
+            },
+            "workload-version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "charm",
+            "series",
+            "exposed",
+            "life",
+            "relations",
+            "can-upgrade-to",
+            "subordinate-to",
+            "units",
+            "meter-statuses",
+            "status",
+            "workload-version"
+          ]
+        },
+        "Binary": {
+          "type": "object",
+          "properties": {
+            "Arch": {
+              "type": "string"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Number",
+            "Series",
+            "Arch"
+          ]
+        },
+        "BundleChange": {
+          "type": "object",
+          "properties": {
+            "args": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "additionalProperties": true
+              }
+            },
+            "id": {
+              "type": "string"
+            },
+            "method": {
+              "type": "string"
+            },
+            "requires": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "method",
+            "args",
+            "requires"
+          ]
+        },
+        "BundleChangesParams": {
+          "type": "object",
+          "properties": {
+            "yaml": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "yaml"
+          ]
+        },
+        "BundleChangesResults": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BundleChange"
+              }
+            },
+            "errors": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "source"
+          ]
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Count": {
+              "type": "integer"
+            },
+            "Pool": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Pool",
+            "Size",
+            "Count"
+          ]
+        },
+        "DestroyMachines": {
+          "type": "object",
+          "properties": {
+            "force": {
+              "type": "boolean"
+            },
+            "machine-names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-names",
+            "force"
+          ]
+        },
+        "DetailedStatus": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "info": {
+              "type": "string"
+            },
+            "kind": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "info",
+            "data",
+            "since",
+            "kind",
+            "version",
+            "life"
+          ]
+        },
+        "EndpointStatus": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "role": {
+              "type": "string"
+            },
+            "subordinate": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "name",
+            "role",
+            "subordinate"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatus": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "info",
+            "since"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "FindToolsParams": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "major": {
+              "type": "integer"
+            },
+            "minor": {
+              "type": "integer"
+            },
+            "number": {
+              "$ref": "#/definitions/Number"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "number",
+            "major",
+            "minor",
+            "arch",
+            "series"
+          ]
+        },
+        "FindToolsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "list": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "list"
+          ]
+        },
+        "FullStatus": {
+          "type": "object",
+          "properties": {
+            "applications": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ApplicationStatus"
+                }
+              }
+            },
+            "machines": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MachineStatus"
+                }
+              }
+            },
+            "model": {
+              "$ref": "#/definitions/ModelStatusInfo"
+            },
+            "relations": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationStatus"
+              }
+            },
+            "remote-applications": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RemoteApplicationStatus"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model",
+            "machines",
+            "applications",
+            "remote-applications",
+            "relations"
+          ]
+        },
+        "GetConstraintsResults": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "HardwareCharacteristics": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "History": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "statuses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DetailedStatus"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "statuses"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MachineStatus": {
+          "type": "object",
+          "properties": {
+            "agent-status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "constraints": {
+              "type": "string"
+            },
+            "containers": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MachineStatus"
+                }
+              }
+            },
+            "dns-name": {
+              "type": "string"
+            },
+            "hardware": {
+              "type": "string"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "instance-status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "ip-addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "network-interfaces": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/NetworkInterface"
+                }
+              }
+            },
+            "series": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "agent-status",
+            "instance-status",
+            "dns-name",
+            "instance-id",
+            "series",
+            "id",
+            "containers",
+            "constraints",
+            "hardware",
+            "jobs",
+            "has-vote",
+            "wants-vote"
+          ]
+        },
+        "MeterStatus": {
+          "type": "object",
+          "properties": {
+            "color": {
+              "type": "string"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "color",
+            "message"
+          ]
+        },
+        "ModelConfigResults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ConfigValue"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "cloud-credential-tag": {
+              "type": "string"
+            },
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "controller-uuid": {
+              "type": "string"
+            },
+            "default-series": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "provider-type": {
+              "type": "string"
+            },
+            "sla": {
+              "$ref": "#/definitions/ModelSLAInfo"
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfo"
+              }
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid",
+            "controller-uuid",
+            "cloud-tag",
+            "owner-tag",
+            "life",
+            "users",
+            "machines",
+            "sla",
+            "agent-version"
+          ]
+        },
+        "ModelMachineInfo": {
+          "type": "object",
+          "properties": {
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "ModelMigrationStatus": {
+          "type": "object",
+          "properties": {
+            "end": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "start": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "start"
+          ]
+        },
+        "ModelSLA": {
+          "type": "object",
+          "properties": {
+            "ModelSLAInfo": {
+              "$ref": "#/definitions/ModelSLAInfo"
+            },
+            "creds": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ModelSLAInfo",
+            "creds"
+          ]
+        },
+        "ModelSLAInfo": {
+          "type": "object",
+          "properties": {
+            "level": {
+              "type": "string"
+            },
+            "owner": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "level",
+            "owner"
+          ]
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelStatusInfo": {
+          "type": "object",
+          "properties": {
+            "available-version": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "meter-status": {
+              "$ref": "#/definitions/MeterStatus"
+            },
+            "model-status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "sla": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "cloud-tag",
+            "version",
+            "available-version",
+            "model-status",
+            "meter-status",
+            "sla"
+          ]
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
+          ]
+        },
+        "ModelUserInfo": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "display-name": {
+              "type": "string"
+            },
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "user": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user",
+            "display-name",
+            "last-connection",
+            "access"
+          ]
+        },
+        "ModelUserInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ModelUserInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelUserInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "NetworkInterface": {
+          "type": "object",
+          "properties": {
+            "dns-nameservers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "gateway": {
+              "type": "string"
+            },
+            "ip-addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "is-up": {
+              "type": "boolean"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "space": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ip-addresses",
+            "mac-address",
+            "is-up"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "Placement": {
+          "type": "object",
+          "properties": {
+            "directive": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "scope",
+            "directive"
+          ]
+        },
+        "PrivateAddress": {
+          "type": "object",
+          "properties": {
+            "target": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "target"
+          ]
+        },
+        "PrivateAddressResults": {
+          "type": "object",
+          "properties": {
+            "private-address": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "private-address"
+          ]
+        },
+        "ProvisioningScriptParams": {
+          "type": "object",
+          "properties": {
+            "data-dir": {
+              "type": "string"
+            },
+            "disable-package-commands": {
+              "type": "boolean"
+            },
+            "machine-id": {
+              "type": "string"
+            },
+            "nonce": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-id",
+            "nonce",
+            "data-dir",
+            "disable-package-commands"
+          ]
+        },
+        "ProvisioningScriptResult": {
+          "type": "object",
+          "properties": {
+            "script": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "script"
+          ]
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "target": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "target"
+          ]
+        },
+        "PublicAddressResults": {
+          "type": "object",
+          "properties": {
+            "public-address": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "public-address"
+          ]
+        },
+        "RelationStatus": {
+          "type": "object",
+          "properties": {
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EndpointStatus"
+              }
+            },
+            "id": {
+              "type": "integer"
+            },
+            "interface": {
+              "type": "string"
+            },
+            "key": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "key",
+            "interface",
+            "scope",
+            "endpoints"
+          ]
+        },
+        "RemoteApplicationStatus": {
+          "type": "object",
+          "properties": {
+            "application-name": {
+              "type": "string"
+            },
+            "application-url": {
+              "type": "string"
+            },
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RemoteEndpoint"
+              }
+            },
+            "err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "life": {
+              "type": "string"
+            },
+            "relations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "status": {
+              "$ref": "#/definitions/DetailedStatus"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-url",
+            "application-name",
+            "endpoints",
+            "life",
+            "relations",
+            "status"
+          ]
+        },
+        "RemoteEndpoint": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "limit",
+            "scope"
+          ]
+        },
+        "ResolveCharmResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "type": "string"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ResolveCharmResults": {
+          "type": "object",
+          "properties": {
+            "urls": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResolveCharmResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "urls"
+          ]
+        },
+        "ResolveCharms": {
+          "type": "object",
+          "properties": {
+            "references": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "references"
+          ]
+        },
+        "Resolved": {
+          "type": "object",
+          "properties": {
+            "retry": {
+              "type": "boolean"
+            },
+            "unit-name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit-name",
+            "retry"
+          ]
+        },
+        "SetConstraints": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "constraints"
+          ]
+        },
+        "SetModelAgentVersion": {
+          "type": "object",
+          "properties": {
+            "version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        },
+        "StatusHistoryFilter": {
+          "type": "object",
+          "properties": {
+            "date": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "delta": {
+              "type": "integer"
+            },
+            "exclude": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "size",
+            "date",
+            "delta",
+            "exclude"
+          ]
+        },
+        "StatusHistoryRequest": {
+          "type": "object",
+          "properties": {
+            "filter": {
+              "$ref": "#/definitions/StatusHistoryFilter"
+            },
+            "historyKind": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "historyKind",
+            "size",
+            "filter",
+            "tag"
+          ]
+        },
+        "StatusHistoryRequests": {
+          "type": "object",
+          "properties": {
+            "requests": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusHistoryRequest"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "requests"
+          ]
+        },
+        "StatusHistoryResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "history": {
+              "$ref": "#/definitions/History"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "history"
+          ]
+        },
+        "StatusHistoryResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusHistoryResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StatusParams": {
+          "type": "object",
+          "properties": {
+            "patterns": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "patterns"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "sha256": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "url",
+            "size"
+          ]
+        },
+        "UnitStatus": {
+          "type": "object",
+          "properties": {
+            "agent-status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "charm": {
+              "type": "string"
+            },
+            "leader": {
+              "type": "boolean"
+            },
+            "machine": {
+              "type": "string"
+            },
+            "opened-ports": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "public-address": {
+              "type": "string"
+            },
+            "subordinates": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitStatus"
+                }
+              }
+            },
+            "workload-status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "workload-version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "agent-status",
+            "workload-status",
+            "workload-version",
+            "machine",
+            "opened-ports",
+            "public-address",
+            "charm",
+            "subordinates"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Cloud",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Cloud": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudResults"
+            }
+          }
+        },
+        "Clouds": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/CloudsResult"
+            }
+          }
+        },
+        "Credential": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudCredentialResults"
+            }
+          }
+        },
+        "DefaultCloud": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "InstanceTypes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CloudInstanceTypesConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/InstanceTypesResults"
+            }
+          }
+        },
+        "RevokeCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UpdateCloudCredentials"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UserCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UserClouds"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Cloud": {
+          "type": "object",
+          "properties": {
+            "auth-types": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "regions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudRegion"
+              }
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type"
+          ]
+        },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudCredentialResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudCredential"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudCredentialResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudCredentialResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudInstanceTypesConstraint": {
+          "type": "object",
+          "properties": {
+            "cloud-tag": {
+              "type": "string"
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "region": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "cloud-tag",
+            "region"
+          ]
+        },
+        "CloudInstanceTypesConstraints": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudInstanceTypesConstraint"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "CloudRegion": {
+          "type": "object",
+          "properties": {
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name"
+          ]
+        },
+        "CloudResult": {
+          "type": "object",
+          "properties": {
+            "cloud": {
+              "$ref": "#/definitions/Cloud"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudsResult": {
+          "type": "object",
+          "properties": {
+            "clouds": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Cloud"
+                }
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "InstanceType": {
+          "type": "object",
+          "properties": {
+            "arches": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "cost": {
+              "type": "integer"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "deprecated": {
+              "type": "boolean"
+            },
+            "memory": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "arches",
+            "cpu-cores",
+            "memory"
+          ]
+        },
+        "InstanceTypesResult": {
+          "type": "object",
+          "properties": {
+            "cost-currency": {
+              "type": "string"
+            },
+            "cost-divisor": {
+              "type": "integer"
+            },
+            "cost-unit": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "instance-types": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceType"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "InstanceTypesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceTypesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UpdateCloudCredential": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "credential"
+          ]
+        },
+        "UpdateCloudCredentials": {
+          "type": "object",
+          "properties": {
+            "credentials": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UpdateCloudCredential"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserCloud": {
+          "type": "object",
+          "properties": {
+            "cloud-tag": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "cloud-tag"
+          ]
+        },
+        "UserClouds": {
+          "type": "object",
+          "properties": {
+            "user-clouds": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserCloud"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Controller",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AllModels": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/UserModelList"
+            }
+          }
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
+        "ControllerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ControllerConfigResult"
+            }
+          }
+        },
+        "DestroyController": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyControllerArgs"
+            }
+          }
+        },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
+        "GetControllerAccess": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/UserAccessResults"
+            }
+          }
+        },
+        "HostedModelConfigs": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/HostedModelConfigsResults"
+            }
+          }
+        },
+        "InitiateMigration": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/InitiateMigrationArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/InitiateMigrationResults"
+            }
+          }
+        },
+        "ListBlockedModels": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelBlockInfoList"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
+            }
+          }
+        },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelStatusResults"
+            }
+          }
+        },
+        "ModifyControllerAccess": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyControllerAccessRequest"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "RemoveBlocks": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RemoveBlocksArgs"
+            }
+          }
+        },
+        "WatchAllModels": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/AllWatcherId"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AllWatcherId": {
+          "type": "object",
+          "properties": {
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "source"
+          ]
+        },
+        "ControllerConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "DestroyControllerArgs": {
+          "type": "object",
+          "properties": {
+            "destroy-models": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "destroy-models"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostedModelConfig": {
+          "type": "object",
+          "properties": {
+            "cloud-spec": {
+              "$ref": "#/definitions/CloudSpec"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "owner"
+          ]
+        },
+        "HostedModelConfigsResults": {
+          "type": "object",
+          "properties": {
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/HostedModelConfig"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "models"
+          ]
+        },
+        "InitiateMigrationArgs": {
+          "type": "object",
+          "properties": {
+            "specs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MigrationSpec"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "specs"
+          ]
+        },
+        "InitiateMigrationResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "migration-id": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "migration-id"
+          ]
+        },
+        "InitiateMigrationResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InitiateMigrationResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MigrationSpec": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            },
+            "target-info": {
+              "$ref": "#/definitions/MigrationTargetInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "target-info"
+          ]
+        },
+        "MigrationTargetInfo": {
+          "type": "object",
+          "properties": {
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "auth-tag": {
+              "type": "string"
+            },
+            "ca-cert": {
+              "type": "string"
+            },
+            "controller-tag": {
+              "type": "string"
+            },
+            "macaroons": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag"
+          ]
+        },
+        "Model": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid",
+            "owner-tag"
+          ]
+        },
+        "ModelBlockInfo": {
+          "type": "object",
+          "properties": {
+            "blocks": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "model-uuid": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "model-uuid",
+            "owner-tag",
+            "blocks"
+          ]
+        },
+        "ModelBlockInfoList": {
+          "type": "object",
+          "properties": {
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelBlockInfo"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelConfigResults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ConfigValue"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelMachineInfo": {
+          "type": "object",
+          "properties": {
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "application-count": {
+              "type": "integer"
+            },
+            "hosted-machine-count": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "life",
+            "hosted-machine-count",
+            "application-count",
+            "owner-tag"
+          ]
+        },
+        "ModelStatusResults": {
+          "type": "object",
+          "properties": {
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelStatus"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "models"
+          ]
+        },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModifyControllerAccess": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "action": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "action",
+            "access"
+          ]
+        },
+        "ModifyControllerAccessRequest": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModifyControllerAccess"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "RemoveBlocksArgs": {
+          "type": "object",
+          "properties": {
+            "all": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "all"
+          ]
+        },
+        "UserAccess": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "access"
+          ]
+        },
+        "UserAccessResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/UserAccess"
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserAccessResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserAccessResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserModel": {
+          "type": "object",
+          "properties": {
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "model": {
+              "$ref": "#/definitions/Model"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model",
+            "last-connection"
+          ]
+        },
+        "UserModelList": {
+          "type": "object",
+          "properties": {
+            "user-models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserModel"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-models"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Deployer",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "ConnectionInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/DeployerConnectionValues"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetPasswords": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StateAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "DeployerConnectionValues": {
+          "type": "object",
+          "properties": {
+            "api-addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "state-addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "state-addresses",
+            "api-addresses"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityPassword": {
+          "type": "object",
+          "properties": {
+            "password": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "password"
+          ]
+        },
+        "EntityPasswords": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "DiscoverSpaces",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddSubnetsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "CreateSpaces": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CreateSpacesParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ListSpaces": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/DiscoverSpacesResults"
+            }
+          }
+        },
+        "ListSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SubnetsFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListSubnetsResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddSubnetParams": {
+          "type": "object",
+          "properties": {
+            "provider-network-id": {
+              "type": "string"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "subnet-provider-id": {
+              "type": "string"
+            },
+            "subnet-tag": {
+              "type": "string"
+            },
+            "vlan-tag": {
+              "type": "integer"
+            },
+            "zones": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "space-tag"
+          ]
+        },
+        "AddSubnetsParams": {
+          "type": "object",
+          "properties": {
+            "subnets": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddSubnetParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "subnets"
+          ]
+        },
+        "CreateSpaceParams": {
+          "type": "object",
+          "properties": {
+            "provider-id": {
+              "type": "string"
+            },
+            "public": {
+              "type": "boolean"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "subnet-tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "subnet-tags",
+            "space-tag",
+            "public"
+          ]
+        },
+        "CreateSpacesParams": {
+          "type": "object",
+          "properties": {
+            "spaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CreateSpaceParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "spaces"
+          ]
+        },
+        "DiscoverSpacesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderSpace"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ListSubnetsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Subnet"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ProviderSpace": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "subnets": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Subnet"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "provider-id",
+            "subnets"
+          ]
+        },
+        "Subnet": {
+          "type": "object",
+          "properties": {
+            "cidr": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-network-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "vlan-tag": {
+              "type": "integer"
+            },
+            "zones": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "cidr",
+            "vlan-tag",
+            "life",
+            "space-tag",
+            "zones"
+          ]
+        },
+        "SubnetsFilters": {
+          "type": "object",
+          "properties": {
+            "space-tag": {
+              "type": "string"
+            },
+            "zone": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "DiskManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "SetMachineBlockDevices": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineBlockDevices"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "BlockDevice": {
+          "type": "object",
+          "properties": {
+            "BusAddress": {
+              "type": "string"
+            },
+            "DeviceLinks": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DeviceName": {
+              "type": "string"
+            },
+            "FilesystemType": {
+              "type": "string"
+            },
+            "HardwareId": {
+              "type": "string"
+            },
+            "InUse": {
+              "type": "boolean"
+            },
+            "Label": {
+              "type": "string"
+            },
+            "MountPoint": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            },
+            "UUID": {
+              "type": "string"
+            },
+            "WWN": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "DeviceName",
+            "DeviceLinks",
+            "Label",
+            "UUID",
+            "HardwareId",
+            "WWN",
+            "BusAddress",
+            "Size",
+            "FilesystemType",
+            "InUse",
+            "MountPoint"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineBlockDevices": {
+          "type": "object",
+          "properties": {
+            "block-devices": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BlockDevice"
+              }
+            },
+            "machine": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine"
+          ]
+        },
+        "SetMachineBlockDevices": {
+          "type": "object",
+          "properties": {
+            "machine-block-devices": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineBlockDevices"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-block-devices"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "EntityWatcher",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/EntitiesWatchResult"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "EntitiesWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "FilesystemAttachmentsWatcher",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MachineStorageIdsWatchResult"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineStorageId": {
+          "type": "object",
+          "properties": {
+            "attachment-tag": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "attachment-tag"
+          ]
+        },
+        "MachineStorageIdsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageId"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id",
+            "changes"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Firewaller",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
+        "GetAssignedMachine": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
+        "GetExposed": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/BoolResults"
+            }
+          }
+        },
+        "GetMachineActiveSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        },
+        "GetMachinePorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachinePortsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachinePortsResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        },
+        "WatchOpenedPorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "BoolResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "BoolResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BoolResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachinePortRange": {
+          "type": "object",
+          "properties": {
+            "port-range": {
+              "$ref": "#/definitions/PortRange"
+            },
+            "relation-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit-tag",
+            "relation-tag",
+            "port-range"
+          ]
+        },
+        "MachinePorts": {
+          "type": "object",
+          "properties": {
+            "machine-tag": {
+              "type": "string"
+            },
+            "subnet-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "subnet-tag"
+          ]
+        },
+        "MachinePortsParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePorts"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "MachinePortsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "ports": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePortRange"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ports"
+          ]
+        },
+        "MachinePortsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePortsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "PortRange": {
+          "type": "object",
+          "properties": {
+            "from-port": {
+              "type": "integer"
+            },
+            "protocol": {
+              "type": "string"
+            },
+            "to-port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "from-port",
+            "to-port",
+            "protocol"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "HighAvailability",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "EnableHA": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ControllersSpecs"
+            },
+            "Result": {
+              "$ref": "#/definitions/ControllersChangeResults"
+            }
+          }
+        },
+        "ResumeHAReplicationAfterUpgrade": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ResumeReplicationParams"
+            }
+          }
+        },
+        "StopHAReplicationForUpgrade": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UpgradeMongoParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/MongoUpgradeResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Address": {
+          "type": "object",
+          "properties": {
+            "Scope": {
+              "type": "string"
+            },
+            "SpaceName": {
+              "type": "string"
+            },
+            "SpaceProviderId": {
+              "type": "string"
+            },
+            "Type": {
+              "type": "string"
+            },
+            "Value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Value",
+            "Type",
+            "Scope",
+            "SpaceName",
+            "SpaceProviderId"
+          ]
+        },
+        "ControllersChangeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ControllersChanges"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "ControllersChangeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ControllersChangeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ControllersChanges": {
+          "type": "object",
+          "properties": {
+            "added": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "converted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "demoted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "maintained": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "promoted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ControllersSpec": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "num-controllers": {
+              "type": "integer"
+            },
+            "placement": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "num-controllers"
+          ]
+        },
+        "ControllersSpecs": {
+          "type": "object",
+          "properties": {
+            "specs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ControllersSpec"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "specs"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "HAMember": {
+          "type": "object",
+          "properties": {
+            "public-address": {
+              "$ref": "#/definitions/Address"
+            },
+            "series": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "public-address",
+            "series"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Member": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "type": "string"
+            },
+            "Arbiter": {
+              "type": "boolean"
+            },
+            "BuildIndexes": {
+              "type": "boolean"
+            },
+            "Hidden": {
+              "type": "boolean"
+            },
+            "Id": {
+              "type": "integer"
+            },
+            "Priority": {
+              "type": "number"
+            },
+            "SlaveDelay": {
+              "type": "integer"
+            },
+            "Tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "Votes": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Id",
+            "Address",
+            "Arbiter",
+            "BuildIndexes",
+            "Hidden",
+            "Priority",
+            "Tags",
+            "SlaveDelay",
+            "Votes"
+          ]
+        },
+        "MongoUpgradeResults": {
+          "type": "object",
+          "properties": {
+            "ha-members": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/HAMember"
+              }
+            },
+            "master": {
+              "$ref": "#/definitions/HAMember"
+            },
+            "rs-members": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Member"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "rs-members",
+            "master",
+            "ha-members"
+          ]
+        },
+        "MongoVersion": {
+          "type": "object",
+          "properties": {
+            "engine": {
+              "type": "string"
+            },
+            "major": {
+              "type": "integer"
+            },
+            "minor": {
+              "type": "integer"
+            },
+            "patch": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "major",
+            "minor",
+            "patch",
+            "engine"
+          ]
+        },
+        "ResumeReplicationParams": {
+          "type": "object",
+          "properties": {
+            "members": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Member"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "members"
+          ]
+        },
+        "UpgradeMongoParams": {
+          "type": "object",
+          "properties": {
+            "target": {
+              "$ref": "#/definitions/MongoVersion"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "target"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "HostKeyReporter",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ReportKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SSHHostKeySet"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "SSHHostKeySet": {
+          "type": "object",
+          "properties": {
+            "entity-keys": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SSHHostKeys"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entity-keys"
+          ]
+        },
+        "SSHHostKeys": {
+          "type": "object",
+          "properties": {
+            "public-keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "public-keys"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ImageManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "DeleteImages": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ImageFilterParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ListImages": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ImageFilterParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListImageResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ImageFilterParams": {
+          "type": "object",
+          "properties": {
+            "images": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ImageSpec"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "images"
+          ]
+        },
+        "ImageMetadata": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "kind": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "kind",
+            "arch",
+            "series",
+            "url",
+            "created"
+          ]
+        },
+        "ImageSpec": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "kind": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "kind",
+            "arch",
+            "series"
+          ]
+        },
+        "ListImageResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ImageMetadata"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "ImageMetadata",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Delete": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MetadataImageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ImageMetadataFilter"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListCloudImageMetadataResult"
+            }
+          }
+        },
+        "Save": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MetadataSaveParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateFromPublishedImages": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "CloudImageMetadata": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "image-id": {
+              "type": "string"
+            },
+            "priority": {
+              "type": "integer"
+            },
+            "region": {
+              "type": "string"
+            },
+            "root-storage-size": {
+              "type": "integer"
+            },
+            "root-storage-type": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "source": {
+              "type": "string"
+            },
+            "stream": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "image-id",
+            "region",
+            "version",
+            "series",
+            "arch",
+            "source",
+            "priority"
+          ]
+        },
+        "CloudImageMetadataList": {
+          "type": "object",
+          "properties": {
+            "metadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ImageMetadataFilter": {
+          "type": "object",
+          "properties": {
+            "arches": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "region": {
+              "type": "string"
+            },
+            "root-storage-type": {
+              "type": "string"
+            },
+            "series": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "stream": {
+              "type": "string"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ListCloudImageMetadataResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MetadataImageIds": {
+          "type": "object",
+          "properties": {
+            "image-ids": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "image-ids"
+          ]
+        },
+        "MetadataSaveParams": {
+          "type": "object",
+          "properties": {
+            "metadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadataList"
+              }
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "InstancePoller",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AreManuallyProvisioned": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/BoolResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "InstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ProviderAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineAddressesResults"
+            }
+          }
+        },
+        "SetInstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetProviderAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachinesAddresses"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Status": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "BoolResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "BoolResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BoolResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineAddresses": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "addresses"
+          ]
+        },
+        "MachineAddressesResult": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "addresses"
+          ]
+        },
+        "MachineAddressesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineAddressesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "SetMachinesAddresses": {
+          "type": "object",
+          "properties": {
+            "machine-addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineAddresses"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-addresses"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "StatusResult": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "life",
+            "status",
+            "info",
+            "data",
+            "since"
+          ]
+        },
+        "StatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "KeyManager",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyUserSSHKeys"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "DeleteKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyUserSSHKeys"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ImportKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyUserSSHKeys"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ListKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ListSSHKeys"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ListSSHKeys": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "$ref": "#/definitions/Entities"
+            },
+            "mode": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities",
+            "mode"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModifyUserSSHKeys": {
+          "type": "object",
+          "properties": {
+            "ssh-keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "user": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user",
+            "ssh-keys"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "KeyUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AuthorisedKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        },
+        "WatchAuthorisedKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "LeadershipService",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "BlockUntilLeadershipReleased": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ApplicationTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        },
+        "ClaimLeadership": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ClaimLeadershipBulkParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ClaimLeadershipBulkResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "ApplicationTag": {
+          "type": "object",
+          "properties": {
+            "Name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Name"
+          ]
+        },
+        "ClaimLeadershipBulkParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ClaimLeadershipParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "ClaimLeadershipBulkResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ClaimLeadershipParams": {
+          "type": "object",
+          "properties": {
+            "application-tag": {
+              "type": "string"
+            },
+            "duration": {
+              "type": "number"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-tag",
+            "unit-tag",
+            "duration"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "LifeFlag",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "LogForwarding",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetLastSent": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/LogForwardingGetLastSentParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/LogForwardingGetLastSentResults"
+            }
+          }
+        },
+        "SetLastSent": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/LogForwardingSetLastSentParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "LogForwardingGetLastSentParams": {
+          "type": "object",
+          "properties": {
+            "ids": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LogForwardingID"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ids"
+          ]
+        },
+        "LogForwardingGetLastSentResult": {
+          "type": "object",
+          "properties": {
+            "err": {
+              "$ref": "#/definitions/Error"
+            },
+            "record-id": {
+              "type": "integer"
+            },
+            "record-timestamp": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "record-id",
+            "record-timestamp",
+            "err"
+          ]
+        },
+        "LogForwardingGetLastSentResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LogForwardingGetLastSentResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "LogForwardingID": {
+          "type": "object",
+          "properties": {
+            "model": {
+              "type": "string"
+            },
+            "sink": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model",
+            "sink"
+          ]
+        },
+        "LogForwardingSetLastSentParam": {
+          "type": "object",
+          "properties": {
+            "LogForwardingID": {
+              "$ref": "#/definitions/LogForwardingID"
+            },
+            "record-id": {
+              "type": "integer"
+            },
+            "record-timestamp": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "LogForwardingID",
+            "record-id",
+            "record-timestamp"
+          ]
+        },
+        "LogForwardingSetLastSentParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LogForwardingSetLastSentParam"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "Logger",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "LoggingConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "WatchLoggingConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MachineActions",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Actions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "BeginActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FinishActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ActionExecutionResults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "RunningActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
+            }
+          }
+        },
+        "WatchActionNotifications": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Action": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "parameters": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "receiver": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "receiver",
+            "name"
+          ]
+        },
+        "ActionExecutionResult": {
+          "type": "object",
+          "properties": {
+            "action-tag": {
+              "type": "string"
+            },
+            "message": {
+              "type": "string"
+            },
+            "results": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "action-tag",
+            "status"
+          ]
+        },
+        "ActionExecutionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionExecutionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionResult": {
+          "type": "object",
+          "properties": {
+            "action": {
+              "$ref": "#/definitions/Action"
+            },
+            "completed": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "enqueued": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "message": {
+              "type": "string"
+            },
+            "output": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "started": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByReceiver": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "receiver": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionsByReceivers": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionsByReceiver"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MachineManager",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
+            }
+          }
+        },
+        "DestroyMachine": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DestroyMachineResults"
+            }
+          }
+        },
+        "ForceDestroyMachine": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DestroyMachineResults"
+            }
+          }
+        },
+        "InstanceTypes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelInstanceTypesConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/InstanceTypesResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddMachineParams": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "container-type": {
+              "type": "string"
+            },
+            "disks": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Constraints"
+              }
+            },
+            "hardware-characteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "nonce": {
+              "type": "string"
+            },
+            "parent-id": {
+              "type": "string"
+            },
+            "placement": {
+              "$ref": "#/definitions/Placement"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "series",
+            "constraints",
+            "jobs",
+            "parent-id",
+            "container-type",
+            "instance-id",
+            "nonce",
+            "hardware-characteristics",
+            "addresses"
+          ]
+        },
+        "AddMachines": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachineParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "AddMachinesResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "machine": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine"
+          ]
+        },
+        "AddMachinesResults": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachinesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machines"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Count": {
+              "type": "integer"
+            },
+            "Pool": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Pool",
+            "Size",
+            "Count"
+          ]
+        },
+        "DestroyMachineInfo": {
+          "type": "object",
+          "properties": {
+            "destroyed-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "destroyed-units": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "detached-storage": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyMachineResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "$ref": "#/definitions/DestroyMachineInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "DestroyMachineResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DestroyMachineResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "HardwareCharacteristics": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "InstanceType": {
+          "type": "object",
+          "properties": {
+            "arches": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "cost": {
+              "type": "integer"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "deprecated": {
+              "type": "boolean"
+            },
+            "memory": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "arches",
+            "cpu-cores",
+            "memory"
+          ]
+        },
+        "InstanceTypesResult": {
+          "type": "object",
+          "properties": {
+            "cost-currency": {
+              "type": "string"
+            },
+            "cost-divisor": {
+              "type": "integer"
+            },
+            "cost-unit": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "instance-types": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceType"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "InstanceTypesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceTypesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelInstanceTypesConstraint": {
+          "type": "object",
+          "properties": {
+            "value": {
+              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelInstanceTypesConstraints": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelInstanceTypesConstraint"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "Placement": {
+          "type": "object",
+          "properties": {
+            "directive": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "scope",
+            "directive"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "MachineUndertaker",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AllMachineRemovals": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/EntitiesResults"
+            }
+          }
+        },
+        "CompleteMachineRemovals": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            }
+          }
+        },
+        "GetMachineProviderInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProviderInterfaceInfoResults"
+            }
+          }
+        },
+        "WatchMachineRemovals": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResult": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntitiesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ProviderInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "interface-name": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "interface-name",
+            "mac-address",
+            "provider-id"
+          ]
+        },
+        "ProviderInterfaceInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "interfaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfo"
+              }
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "interfaces"
+          ]
+        },
+        "ProviderInterfaceInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Machiner",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Jobs": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/JobsResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "SetMachineAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachinesAddresses"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetObservedNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
+        "SetProviderNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "JobsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "jobs"
+          ]
+        },
+        "JobsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/JobsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineAddresses": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "addresses"
+          ]
+        },
+        "NetworkConfig": {
+          "type": "object",
+          "properties": {
+            "address": {
+              "type": "string"
+            },
+            "cidr": {
+              "type": "string"
+            },
+            "config-type": {
+              "type": "string"
+            },
+            "device-index": {
+              "type": "integer"
+            },
+            "disabled": {
+              "type": "boolean"
+            },
+            "dns-search-domains": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "dns-servers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "gateway-address": {
+              "type": "string"
+            },
+            "interface-name": {
+              "type": "string"
+            },
+            "interface-type": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "mtu": {
+              "type": "integer"
+            },
+            "no-auto-start": {
+              "type": "boolean"
+            },
+            "parent-interface-name": {
+              "type": "string"
+            },
+            "provider-address-id": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "provider-subnet-id": {
+              "type": "string"
+            },
+            "provider-vlan-id": {
+              "type": "string"
+            },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
+            "vlan-tag": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "device-index",
+            "mac-address",
+            "cidr",
+            "mtu",
+            "provider-id",
+            "provider-subnet-id",
+            "provider-space-id",
+            "provider-address-id",
+            "provider-vlan-id",
+            "vlan-tag",
+            "interface-name",
+            "parent-interface-name",
+            "interface-type",
+            "disabled"
+          ]
+        },
+        "NetworkRoute": {
+          "type": "object",
+          "properties": {
+            "destination-cidr": {
+              "type": "string"
+            },
+            "gateway-ip": {
+              "type": "string"
+            },
+            "metric": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "destination-cidr",
+            "gateway-ip",
+            "metric"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "config"
+          ]
+        },
+        "SetMachinesAddresses": {
+          "type": "object",
+          "properties": {
+            "machine-addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineAddresses"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-addresses"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "MeterStatus",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetMeterStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MeterStatusResults"
+            }
+          }
+        },
+        "WatchMeterStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MeterStatusResult": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "code",
+            "info"
+          ]
+        },
+        "MeterStatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MeterStatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MetricsAdder",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddMetricBatches": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MetricBatchParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Metric": {
+          "type": "object",
+          "properties": {
+            "key": {
+              "type": "string"
+            },
+            "time": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "key",
+            "value",
+            "time"
+          ]
+        },
+        "MetricBatch": {
+          "type": "object",
+          "properties": {
+            "charm-url": {
+              "type": "string"
+            },
+            "created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "metrics": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Metric"
+              }
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "charm-url",
+            "created",
+            "metrics"
+          ]
+        },
+        "MetricBatchParam": {
+          "type": "object",
+          "properties": {
+            "batch": {
+              "$ref": "#/definitions/MetricBatch"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "batch"
+          ]
+        },
+        "MetricBatchParams": {
+          "type": "object",
+          "properties": {
+            "batches": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MetricBatchParam"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "batches"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MetricsDebug",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetMetrics": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MetricResults"
+            }
+          }
+        },
+        "SetMeterStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MeterStatusParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityMetrics": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "metrics": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MetricResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MeterStatusParam": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "code",
+            "info"
+          ]
+        },
+        "MeterStatusParams": {
+          "type": "object",
+          "properties": {
+            "statues": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MeterStatusParam"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "statues"
+          ]
+        },
+        "MetricResult": {
+          "type": "object",
+          "properties": {
+            "key": {
+              "type": "string"
+            },
+            "time": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "unit": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "time",
+            "key",
+            "value",
+            "unit"
+          ]
+        },
+        "MetricResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityMetrics"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MetricsManager",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddJujuMachineMetrics": {
+          "type": "object"
+        },
+        "CleanupOldMetrics": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SendMetrics": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationFlag",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Phase": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/PhaseResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "PhaseResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "phase": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "PhaseResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/PhaseResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationMaster",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Export": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/SerializedModel"
+            }
+          }
+        },
+        "MigrationStatus": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MasterMigrationStatus"
+            }
+          }
+        },
+        "MinionReports": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MinionReports"
+            }
+          }
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MigrationModelInfo"
+            }
+          }
+        },
+        "Prechecks": {
+          "type": "object"
+        },
+        "Reap": {
+          "type": "object"
+        },
+        "SetPhase": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMigrationPhaseArgs"
+            }
+          }
+        },
+        "SetStatusMessage": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMigrationStatusMessageArgs"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchMinionReports": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MasterMigrationStatus": {
+          "type": "object",
+          "properties": {
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "phase-changed-time": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "spec": {
+              "$ref": "#/definitions/MigrationSpec"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "spec",
+            "migration-id",
+            "phase",
+            "phase-changed-time"
+          ]
+        },
+        "MigrationModelInfo": {
+          "type": "object",
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "controller-agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "owner-tag",
+            "agent-version",
+            "controller-agent-version"
+          ]
+        },
+        "MigrationSpec": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            },
+            "target-info": {
+              "$ref": "#/definitions/MigrationTargetInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "target-info"
+          ]
+        },
+        "MigrationTargetInfo": {
+          "type": "object",
+          "properties": {
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "auth-tag": {
+              "type": "string"
+            },
+            "ca-cert": {
+              "type": "string"
+            },
+            "controller-tag": {
+              "type": "string"
+            },
+            "macaroons": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag"
+          ]
+        },
+        "MinionReports": {
+          "type": "object",
+          "properties": {
+            "failed": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "success-count": {
+              "type": "integer"
+            },
+            "unknown-count": {
+              "type": "integer"
+            },
+            "unknown-sample": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "phase",
+            "success-count",
+            "unknown-count",
+            "unknown-sample",
+            "failed"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "SerializedModel": {
+          "type": "object",
+          "properties": {
+            "bytes": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "charms": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "bytes",
+            "charms",
+            "tools",
+            "resources"
+          ]
+        },
+        "SerializedModelResource": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "application-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
+            },
+            "charmstore-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
+            },
+            "name": {
+              "type": "string"
+            },
+            "unit-revisions": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/SerializedModelResourceRevision"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "name",
+            "application-revision",
+            "charmstore-revision",
+            "unit-revisions"
+          ]
+        },
+        "SerializedModelResourceRevision": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "fingerprint": {
+              "type": "string"
+            },
+            "origin": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "type": {
+              "type": "string"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "revision",
+            "type",
+            "path",
+            "description",
+            "origin",
+            "fingerprint",
+            "size",
+            "timestamp"
+          ]
+        },
+        "SerializedModelTools": {
+          "type": "object",
+          "properties": {
+            "uri": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "uri"
+          ]
+        },
+        "SetMigrationPhaseArgs": {
+          "type": "object",
+          "properties": {
+            "phase": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "phase"
+          ]
+        },
+        "SetMigrationStatusMessageArgs": {
+          "type": "object",
+          "properties": {
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationMinion",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Report": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MinionReport"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MinionReport": {
+          "type": "object",
+          "properties": {
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "success": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "phase",
+            "success"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationStatusWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MigrationStatus"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "MigrationStatus": {
+          "type": "object",
+          "properties": {
+            "attempt": {
+              "type": "integer"
+            },
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "source-api-addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "source-ca-cert": {
+              "type": "string"
+            },
+            "target-api-addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "target-ca-cert": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "attempt",
+            "phase",
+            "source-api-addrs",
+            "source-ca-cert",
+            "target-api-addrs",
+            "target-ca-cert"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationTarget",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Abort": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            }
+          }
+        },
+        "Activate": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            }
+          }
+        },
+        "AdoptResources": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AdoptResourcesArgs"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "Import": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SerializedModel"
+            }
+          }
+        },
+        "LatestLogTime": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            },
+            "Result": {
+              "type": "string",
+              "format": "date-time"
+            }
+          }
+        },
+        "Prechecks": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MigrationModelInfo"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AdoptResourcesArgs": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            },
+            "source-controller-version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "source-controller-version"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "MigrationModelInfo": {
+          "type": "object",
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "controller-agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "owner-tag",
+            "agent-version",
+            "controller-agent-version"
+          ]
+        },
+        "ModelArgs": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "SerializedModel": {
+          "type": "object",
+          "properties": {
+            "bytes": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "charms": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "bytes",
+            "charms",
+            "tools",
+            "resources"
+          ]
+        },
+        "SerializedModelResource": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "type": "string"
+            },
+            "application-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
+            },
+            "charmstore-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
+            },
+            "name": {
+              "type": "string"
+            },
+            "unit-revisions": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/SerializedModelResourceRevision"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "name",
+            "application-revision",
+            "charmstore-revision",
+            "unit-revisions"
+          ]
+        },
+        "SerializedModelResourceRevision": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "fingerprint": {
+              "type": "string"
+            },
+            "origin": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "type": {
+              "type": "string"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "revision",
+            "type",
+            "path",
+            "description",
+            "origin",
+            "fingerprint",
+            "size",
+            "timestamp"
+          ]
+        },
+        "SerializedModelTools": {
+          "type": "object",
+          "properties": {
+            "uri": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "uri"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelConfig",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ModelGet": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
+            }
+          }
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSet"
+            }
+          }
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelUnset"
+            }
+          }
+        },
+        "SLALevel": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "SetSLALevel": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSLA"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "source"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelConfigResults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ConfigValue"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelSLA": {
+          "type": "object",
+          "properties": {
+            "ModelSLAInfo": {
+              "$ref": "#/definitions/ModelSLAInfo"
+            },
+            "creds": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ModelSLAInfo",
+            "creds"
+          ]
+        },
+        "ModelSLAInfo": {
+          "type": "object",
+          "properties": {
+            "level": {
+              "type": "string"
+            },
+            "owner": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "level",
+            "owner"
+          ]
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CreateModel": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelCreateArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelInfo"
+            }
+          }
+        },
+        "DestroyModels": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "DumpModels": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MapResults"
+            }
+          }
+        },
+        "DumpModelsDB": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MapResults"
+            }
+          }
+        },
+        "ListModels": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entity"
+            },
+            "Result": {
+              "$ref": "#/definitions/UserModelList"
+            }
+          }
+        },
+        "ModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelDefaultsResult"
+            }
+          }
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelInfoResults"
+            }
+          }
+        },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelStatusResults"
+            }
+          }
+        },
+        "ModifyModelAccess": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyModelAccessRequest"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetModelDefaults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UnsetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UnsetModelDefaults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatus": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "info",
+            "since"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MapResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "MapResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MapResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Model": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid",
+            "owner-tag"
+          ]
+        },
+        "ModelCreateArgs": {
+          "type": "object",
+          "properties": {
+            "cloud-tag": {
+              "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "credential": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "owner-tag"
+          ]
+        },
+        "ModelDefaultValues": {
+          "type": "object",
+          "properties": {
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelDefaults": {
+          "type": "object",
+          "properties": {
+            "controller": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "default": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "regions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RegionDefaults"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelDefaultsResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ModelDefaults"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "cloud-credential-tag": {
+              "type": "string"
+            },
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "controller-uuid": {
+              "type": "string"
+            },
+            "default-series": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "provider-type": {
+              "type": "string"
+            },
+            "sla": {
+              "$ref": "#/definitions/ModelSLAInfo"
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfo"
+              }
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid",
+            "controller-uuid",
+            "cloud-tag",
+            "owner-tag",
+            "life",
+            "users",
+            "machines",
+            "sla",
+            "agent-version"
+          ]
+        },
+        "ModelInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ModelInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelMachineInfo": {
+          "type": "object",
+          "properties": {
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "ModelMigrationStatus": {
+          "type": "object",
+          "properties": {
+            "end": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "start": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "start"
+          ]
+        },
+        "ModelSLAInfo": {
+          "type": "object",
+          "properties": {
+            "level": {
+              "type": "string"
+            },
+            "owner": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "level",
+            "owner"
+          ]
+        },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "application-count": {
+              "type": "integer"
+            },
+            "hosted-machine-count": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "life",
+            "hosted-machine-count",
+            "application-count",
+            "owner-tag"
+          ]
+        },
+        "ModelStatusResults": {
+          "type": "object",
+          "properties": {
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelStatus"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "models"
+          ]
+        },
+        "ModelUnsetKeys": {
+          "type": "object",
+          "properties": {
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
+          ]
+        },
+        "ModelUserInfo": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "display-name": {
+              "type": "string"
+            },
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "user": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user",
+            "display-name",
+            "last-connection",
+            "access"
+          ]
+        },
+        "ModifyModelAccess": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "action": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "action",
+            "access",
+            "model-tag"
+          ]
+        },
+        "ModifyModelAccessRequest": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModifyModelAccess"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "RegionDefaults": {
+          "type": "object",
+          "properties": {
+            "region-name": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "region-name",
+            "value"
+          ]
+        },
+        "SetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelDefaultValues"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "UnsetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "keys": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUnsetKeys"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
+          ]
+        },
+        "UserModel": {
+          "type": "object",
+          "properties": {
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "model": {
+              "$ref": "#/definitions/Model"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model",
+            "last-connection"
+          ]
+        },
+        "UserModelList": {
+          "type": "object",
+          "properties": {
+            "user-models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserModel"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-models"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "NotifyWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Payloads",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/PayloadListArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadListResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Payload": {
+          "type": "object",
+          "properties": {
+            "class": {
+              "type": "string"
+            },
+            "id": {
+              "type": "string"
+            },
+            "labels": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "machine": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "class",
+            "type",
+            "id",
+            "status",
+            "labels",
+            "unit",
+            "machine"
+          ]
+        },
+        "PayloadListArgs": {
+          "type": "object",
+          "properties": {
+            "patterns": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "patterns"
+          ]
+        },
+        "PayloadListResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Payload"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "PayloadsHookContext",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        },
+        "LookUp": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/LookUpPayloadArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetPayloadStatusArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        },
+        "Track": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/TrackPayloadArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        },
+        "Untrack": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "LookUpPayloadArg": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "id"
+          ]
+        },
+        "LookUpPayloadArgs": {
+          "type": "object",
+          "properties": {
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LookUpPayloadArg"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "args"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Payload": {
+          "type": "object",
+          "properties": {
+            "class": {
+              "type": "string"
+            },
+            "id": {
+              "type": "string"
+            },
+            "labels": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "machine": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "class",
+            "type",
+            "id",
+            "status",
+            "labels",
+            "unit",
+            "machine"
+          ]
+        },
+        "PayloadResult": {
+          "type": "object",
+          "properties": {
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "not-found": {
+              "type": "boolean"
+            },
+            "payload": {
+              "$ref": "#/definitions/Payload"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "payload",
+            "not-found"
+          ]
+        },
+        "PayloadResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/PayloadResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetPayloadStatusArg": {
+          "type": "object",
+          "properties": {
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "status"
+          ]
+        },
+        "SetPayloadStatusArgs": {
+          "type": "object",
+          "properties": {
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SetPayloadStatusArg"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "args"
+          ]
+        },
+        "TrackPayloadArgs": {
+          "type": "object",
+          "properties": {
+            "payloads": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Payload"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "payloads"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Pinger",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Ping": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Provisioner",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ConstraintsResults"
+            }
+          }
+        },
+        "ContainerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ContainerConfig"
+            }
+          }
+        },
+        "ContainerManagerConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ContainerManagerConfigParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ContainerManagerConfig"
+            }
+          }
+        },
+        "ControllerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ControllerConfigResult"
+            }
+          }
+        },
+        "DistributionGroup": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DistributionGroupResults"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FindTools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindToolsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/FindToolsResult"
+            }
+          }
+        },
+        "GetContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "HostChangesForContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/HostNetworkChangeResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "InstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "MachinesWithTransientErrors": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "MarkMachinesForRemoval": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "PrepareContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "ProvisioningInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProvisioningInfoResults"
+            }
+          }
+        },
+        "ReleaseContainerAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Series": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "SetHostMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
+        "SetInstanceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/InstancesInfo"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetInstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetObservedNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
+        "SetPasswords": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetProviderNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetSupportedContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineContainersParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StateAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "Status": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ToolsResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchAllContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/WatchContainers"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/WatchContainers"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchMachineErrorRetry": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "Binary": {
+          "type": "object",
+          "properties": {
+            "Arch": {
+              "type": "string"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Number",
+            "Series",
+            "Arch"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "CloudImageMetadata": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "image-id": {
+              "type": "string"
+            },
+            "priority": {
+              "type": "integer"
+            },
+            "region": {
+              "type": "string"
+            },
+            "root-storage-size": {
+              "type": "integer"
+            },
+            "root-storage-type": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "source": {
+              "type": "string"
+            },
+            "stream": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "image-id",
+            "region",
+            "version",
+            "series",
+            "arch",
+            "source",
+            "priority"
+          ]
+        },
+        "ConstraintsResult": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "ConstraintsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ConstraintsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ContainerConfig": {
+          "type": "object",
+          "properties": {
+            "UpdateBehavior": {
+              "$ref": "#/definitions/UpdateBehavior"
+            },
+            "apt-mirror": {
+              "type": "string"
+            },
+            "apt-proxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "authorized-keys": {
+              "type": "string"
+            },
+            "provider-type": {
+              "type": "string"
+            },
+            "proxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "ssl-hostname-verification": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "provider-type",
+            "authorized-keys",
+            "ssl-hostname-verification",
+            "proxy",
+            "apt-proxy",
+            "apt-mirror",
+            "UpdateBehavior"
+          ]
+        },
+        "ContainerManagerConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ContainerManagerConfigParams": {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type"
+          ]
+        },
+        "ControllerConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "DeviceBridgeInfo": {
+          "type": "object",
+          "properties": {
+            "bridge-name": {
+              "type": "string"
+            },
+            "host-device-name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "host-device-name",
+            "bridge-name"
+          ]
+        },
+        "DistributionGroupResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "DistributionGroupResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DistributionGroupResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityPassword": {
+          "type": "object",
+          "properties": {
+            "password": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "password"
+          ]
+        },
+        "EntityPasswords": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "FindToolsParams": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "major": {
+              "type": "integer"
+            },
+            "minor": {
+              "type": "integer"
+            },
+            "number": {
+              "$ref": "#/definitions/Number"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "number",
+            "major",
+            "minor",
+            "arch",
+            "series"
+          ]
+        },
+        "FindToolsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "list": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "list"
+          ]
+        },
+        "HardwareCharacteristics": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "HostNetworkChange": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "new-bridges": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DeviceBridgeInfo"
+              }
+            },
+            "reconfigure-delay": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "new-bridges",
+            "reconfigure-delay"
+          ]
+        },
+        "HostNetworkChangeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/HostNetworkChange"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "InstanceInfo": {
+          "type": "object",
+          "properties": {
+            "characteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "network-config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "nonce": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            },
+            "volume-attachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/VolumeAttachmentInfo"
+                }
+              }
+            },
+            "volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Volume"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "instance-id",
+            "nonce",
+            "characteristics",
+            "volumes",
+            "volume-attachments",
+            "network-config"
+          ]
+        },
+        "InstancesInfo": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceInfo"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machines"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineContainers": {
+          "type": "object",
+          "properties": {
+            "container-types": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "container-types"
+          ]
+        },
+        "MachineContainersParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineContainers"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "MachineNetworkConfigResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "info"
+          ]
+        },
+        "MachineNetworkConfigResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineNetworkConfigResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "NetworkConfig": {
+          "type": "object",
+          "properties": {
+            "address": {
+              "type": "string"
+            },
+            "cidr": {
+              "type": "string"
+            },
+            "config-type": {
+              "type": "string"
+            },
+            "device-index": {
+              "type": "integer"
+            },
+            "disabled": {
+              "type": "boolean"
+            },
+            "dns-search-domains": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "dns-servers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "gateway-address": {
+              "type": "string"
+            },
+            "interface-name": {
+              "type": "string"
+            },
+            "interface-type": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "mtu": {
+              "type": "integer"
+            },
+            "no-auto-start": {
+              "type": "boolean"
+            },
+            "parent-interface-name": {
+              "type": "string"
+            },
+            "provider-address-id": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "provider-subnet-id": {
+              "type": "string"
+            },
+            "provider-vlan-id": {
+              "type": "string"
+            },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
+            "vlan-tag": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "device-index",
+            "mac-address",
+            "cidr",
+            "mtu",
+            "provider-id",
+            "provider-subnet-id",
+            "provider-space-id",
+            "provider-address-id",
+            "provider-vlan-id",
+            "vlan-tag",
+            "interface-name",
+            "parent-interface-name",
+            "interface-type",
+            "disabled"
+          ]
+        },
+        "NetworkRoute": {
+          "type": "object",
+          "properties": {
+            "destination-cidr": {
+              "type": "string"
+            },
+            "gateway-ip": {
+              "type": "string"
+            },
+            "metric": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "destination-cidr",
+            "gateway-ip",
+            "metric"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "ProvisioningInfo": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "controller-config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "endpoint-bindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "image-metadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "placement": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "subnets-to-zones": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints",
+            "series",
+            "placement",
+            "jobs"
+          ]
+        },
+        "ProvisioningInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ProvisioningInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "ProvisioningInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProvisioningInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "config"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Settings": {
+          "type": "object",
+          "properties": {
+            "AutoNoProxy": {
+              "type": "string"
+            },
+            "Ftp": {
+              "type": "string"
+            },
+            "Http": {
+              "type": "string"
+            },
+            "Https": {
+              "type": "string"
+            },
+            "NoProxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Http",
+            "Https",
+            "Ftp",
+            "NoProxy",
+            "AutoNoProxy"
+          ]
+        },
+        "StatusResult": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "life",
+            "status",
+            "info",
+            "data",
+            "since"
+          ]
+        },
+        "StatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "sha256": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "url",
+            "size"
+          ]
+        },
+        "ToolsResult": {
+          "type": "object",
+          "properties": {
+            "disable-ssl-hostname-verification": {
+              "type": "boolean"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tools",
+            "disable-ssl-hostname-verification"
+          ]
+        },
+        "ToolsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ToolsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UpdateBehavior": {
+          "type": "object",
+          "properties": {
+            "enable-os-refresh-update": {
+              "type": "boolean"
+            },
+            "enable-os-upgrade": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "enable-os-refresh-update",
+            "enable-os-upgrade"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Volume": {
+          "type": "object",
+          "properties": {
+            "info": {
+              "$ref": "#/definitions/VolumeInfo"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "info"
+          ]
+        },
+        "VolumeAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "bus-address": {
+              "type": "string"
+            },
+            "device-link": {
+              "type": "string"
+            },
+            "device-name": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "instance-id": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "machine-tag",
+            "provider"
+          ]
+        },
+        "VolumeInfo": {
+          "type": "object",
+          "properties": {
+            "hardware-id": {
+              "type": "string"
+            },
+            "persistent": {
+              "type": "boolean"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "wwn": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-id",
+            "size",
+            "persistent"
+          ]
+        },
+        "VolumeParams": {
+          "type": "object",
+          "properties": {
+            "attachment": {
+              "$ref": "#/definitions/VolumeAttachmentParams"
+            },
+            "attributes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "size",
+            "provider"
+          ]
+        },
+        "WatchContainer": {
+          "type": "object",
+          "properties": {
+            "container-type": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "container-type"
+          ]
+        },
+        "WatchContainers": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/WatchContainer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ProxyUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProxyConfigResults"
+            }
+          }
+        },
+        "WatchForProxyConfigAndAPIHostPortChanges": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "ftp": {
+              "type": "string"
+            },
+            "http": {
+              "type": "string"
+            },
+            "https": {
+              "type": "string"
+            },
+            "no-proxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "http",
+            "https",
+            "ftp",
+            "no-proxy"
+          ]
+        },
+        "ProxyConfigResult": {
+          "type": "object",
+          "properties": {
+            "apt-proxy-settings": {
+              "$ref": "#/definitions/ProxyConfig"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "proxy-settings": {
+              "$ref": "#/definitions/ProxyConfig"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "proxy-settings",
+            "apt-proxy-settings"
+          ]
+        },
+        "ProxyConfigResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProxyConfigResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Reboot",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ClearReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "GetRebootAction": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/RebootActionResults"
+            }
+          }
+        },
+        "RequestReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchForRebootEvent": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "RebootActionResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "RebootActionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RebootActionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "RelationUnitsWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/RelationUnitsWatchResult"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "RelationUnitsChange": {
+          "type": "object",
+          "properties": {
+            "changed": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitSettings"
+                }
+              }
+            },
+            "departed": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changed"
+          ]
+        },
+        "RelationUnitsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "$ref": "#/definitions/RelationUnitsChange"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id",
+            "changes"
+          ]
+        },
+        "UnitSettings": {
+          "type": "object",
+          "properties": {
+            "version": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Resources",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddPendingResources": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddPendingResourcesArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddPendingResourcesResult"
+            }
+          }
+        },
+        "ListResources": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ListResourcesArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/ResourcesResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddCharmWithAuthorization": {
+          "type": "object",
+          "properties": {
+            "channel": {
+              "type": "string"
+            },
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url",
+            "channel",
+            "macaroon"
+          ]
+        },
+        "AddPendingResourcesArgs": {
+          "type": "object",
+          "properties": {
+            "AddCharmWithAuthorization": {
+              "$ref": "#/definitions/AddCharmWithAuthorization"
+            },
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CharmResource"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "AddCharmWithAuthorization",
+            "resources"
+          ]
+        },
+        "AddPendingResourcesResult": {
+          "type": "object",
+          "properties": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "pending-ids": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "pending-ids"
+          ]
+        },
+        "CharmResource": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "fingerprint": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "name": {
+              "type": "string"
+            },
+            "origin": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "type",
+            "path",
+            "origin",
+            "revision",
+            "fingerprint",
+            "size"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ListResourcesArgs": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Resource": {
+          "type": "object",
+          "properties": {
+            "CharmResource": {
+              "$ref": "#/definitions/CharmResource"
+            },
+            "application": {
+              "type": "string"
+            },
+            "id": {
+              "type": "string"
+            },
+            "pending-id": {
+              "type": "string"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "CharmResource",
+            "id",
+            "pending-id",
+            "application",
+            "username",
+            "timestamp"
+          ]
+        },
+        "ResourcesResult": {
+          "type": "object",
+          "properties": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "charm-store-resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CharmResource"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Resource"
+              }
+            },
+            "unit-resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UnitResources"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "resources",
+            "charm-store-resources",
+            "unit-resources"
+          ]
+        },
+        "ResourcesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResourcesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UnitResources": {
+          "type": "object",
+          "properties": {
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "download-progress": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "integer"
+                }
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Resource"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "resources",
+            "download-progress"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ResourcesHookContext",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetResourceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ListUnitResourcesArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/UnitResourcesResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "CharmResource": {
+          "type": "object",
+          "properties": {
+            "description": {
+              "type": "string"
+            },
+            "fingerprint": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "name": {
+              "type": "string"
+            },
+            "origin": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "type",
+            "path",
+            "origin",
+            "revision",
+            "fingerprint",
+            "size"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ListUnitResourcesArgs": {
+          "type": "object",
+          "properties": {
+            "resource-names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "resource-names"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Resource": {
+          "type": "object",
+          "properties": {
+            "CharmResource": {
+              "$ref": "#/definitions/CharmResource"
+            },
+            "application": {
+              "type": "string"
+            },
+            "id": {
+              "type": "string"
+            },
+            "pending-id": {
+              "type": "string"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "CharmResource",
+            "id",
+            "pending-id",
+            "application",
+            "username",
+            "timestamp"
+          ]
+        },
+        "UnitResourceResult": {
+          "type": "object",
+          "properties": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "resource": {
+              "$ref": "#/definitions/Resource"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "resource"
+          ]
+        },
+        "UnitResourcesResult": {
+          "type": "object",
+          "properties": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UnitResourceResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "resources"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Resumer",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ResumeTransactions": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "RetryStrategy",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "RetryStrategy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/RetryStrategyResults"
+            }
+          }
+        },
+        "WatchRetryStrategy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "RetryStrategy": {
+          "type": "object",
+          "properties": {
+            "jitter-retry-time": {
+              "type": "boolean"
+            },
+            "max-retry-time": {
+              "type": "integer"
+            },
+            "min-retry-time": {
+              "type": "integer"
+            },
+            "retry-time-factor": {
+              "type": "integer"
+            },
+            "should-retry": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "should-retry",
+            "min-retry-time",
+            "max-retry-time",
+            "jitter-retry-time",
+            "retry-time-factor"
+          ]
+        },
+        "RetryStrategyResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/RetryStrategy"
+            }
+          },
+          "additionalProperties": false
+        },
+        "RetryStrategyResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RetryStrategyResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "SSHClient",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AllAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHAddressesResults"
+            }
+          }
+        },
+        "PrivateAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHAddressResults"
+            }
+          }
+        },
+        "Proxy": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/SSHProxyResult"
+            }
+          }
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHAddressResults"
+            }
+          }
+        },
+        "PublicKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHPublicKeysResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "SSHAddressResult": {
+          "type": "object",
+          "properties": {
+            "address": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "SSHAddressResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SSHAddressResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SSHAddressesResult": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "addresses"
+          ]
+        },
+        "SSHAddressesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SSHAddressesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SSHProxyResult": {
+          "type": "object",
+          "properties": {
+            "use-proxy": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "use-proxy"
+          ]
+        },
+        "SSHPublicKeysResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "public-keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "SSHPublicKeysResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SSHPublicKeysResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Singular",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Claim": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SingularClaims"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Wait": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "SingularClaim": {
+          "type": "object",
+          "properties": {
+            "controller-tag": {
+              "type": "string"
+            },
+            "duration": {
+              "type": "integer"
+            },
+            "model-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "controller-tag",
+            "duration"
+          ]
+        },
+        "SingularClaims": {
+          "type": "object",
+          "properties": {
+            "claims": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SingularClaim"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "claims"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Spaces",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CreateSpaces": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CreateSpacesParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ListSpaces": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ListSpacesResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "CreateSpaceParams": {
+          "type": "object",
+          "properties": {
+            "provider-id": {
+              "type": "string"
+            },
+            "public": {
+              "type": "boolean"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "subnet-tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "subnet-tags",
+            "space-tag",
+            "public"
+          ]
+        },
+        "CreateSpacesParams": {
+          "type": "object",
+          "properties": {
+            "spaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CreateSpaceParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "spaces"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ListSpacesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Space"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Space": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            },
+            "subnets": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Subnet"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "subnets"
+          ]
+        },
+        "Subnet": {
+          "type": "object",
+          "properties": {
+            "cidr": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-network-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "vlan-tag": {
+              "type": "integer"
+            },
+            "zones": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "cidr",
+            "vlan-tag",
+            "life",
+            "space-tag",
+            "zones"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "StatusHistory",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "Prune": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StatusHistoryPruneArgs"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "StatusHistoryPruneArgs": {
+          "type": "object",
+          "properties": {
+            "max-history-mb": {
+              "type": "integer"
+            },
+            "max-history-time": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "max-history-time",
+            "max-history-mb"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Storage",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddToUnit": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StoragesAddParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Attach": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "CreatePool": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StoragePool"
+            }
+          }
+        },
+        "Destroy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Detach": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ListFilesystems": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FilesystemFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/FilesystemDetailsListResults"
+            }
+          }
+        },
+        "ListPools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StoragePoolFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/StoragePoolsResults"
+            }
+          }
+        },
+        "ListStorageDetails": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/StorageDetailsListResults"
+            }
+          }
+        },
+        "ListVolumes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/VolumeFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/VolumeDetailsListResults"
+            }
+          }
+        },
+        "StorageDetails": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StorageDetailsResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatus": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "info",
+            "since"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "FilesystemAttachmentDetails": {
+          "type": "object",
+          "properties": {
+            "FilesystemAttachmentInfo": {
+              "$ref": "#/definitions/FilesystemAttachmentInfo"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "FilesystemAttachmentInfo"
+          ]
+        },
+        "FilesystemAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "mount-point": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemDetails": {
+          "type": "object",
+          "properties": {
+            "filesystem-tag": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/FilesystemInfo"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machine-attachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/FilesystemAttachmentDetails"
+                }
+              }
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "storage": {
+              "$ref": "#/definitions/StorageDetails"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-tag",
+            "info",
+            "status"
+          ]
+        },
+        "FilesystemDetailsListResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemDetails"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemDetailsListResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemDetailsListResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemFilter": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemFilters": {
+          "type": "object",
+          "properties": {
+            "filters": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemFilter"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemInfo": {
+          "type": "object",
+          "properties": {
+            "filesystem-id": {
+              "type": "string"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-id",
+            "pool",
+            "size"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StorageAddParams": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "storage": {
+              "$ref": "#/definitions/StorageConstraints"
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit",
+            "name",
+            "storage"
+          ]
+        },
+        "StorageAttachmentDetails": {
+          "type": "object",
+          "properties": {
+            "life": {
+              "type": "string"
+            },
+            "location": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "storage-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storage-tag",
+            "unit-tag",
+            "machine-tag"
+          ]
+        },
+        "StorageAttachmentId": {
+          "type": "object",
+          "properties": {
+            "storage-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storage-tag",
+            "unit-tag"
+          ]
+        },
+        "StorageAttachmentIds": {
+          "type": "object",
+          "properties": {
+            "ids": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAttachmentId"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ids"
+          ]
+        },
+        "StorageConstraints": {
+          "type": "object",
+          "properties": {
+            "count": {
+              "type": "integer"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageDetails": {
+          "type": "object",
+          "properties": {
+            "attachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/StorageAttachmentDetails"
+                }
+              }
+            },
+            "kind": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "persistent": {
+              "type": "boolean"
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "storage-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storage-tag",
+            "owner-tag",
+            "kind",
+            "status",
+            "persistent"
+          ]
+        },
+        "StorageDetailsListResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageDetails"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageDetailsListResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageDetailsListResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageDetailsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/StorageDetails"
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageDetailsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageDetailsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageFilter": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StorageFilters": {
+          "type": "object",
+          "properties": {
+            "filters": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageFilter"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragePool": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "name": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "provider",
+            "attrs"
+          ]
+        },
+        "StoragePoolFilter": {
+          "type": "object",
+          "properties": {
+            "names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "providers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragePoolFilters": {
+          "type": "object",
+          "properties": {
+            "filters": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StoragePoolFilter"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragePoolsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "storage-pools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StoragePool"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragePoolsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StoragePoolsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragesAddParams": {
+          "type": "object",
+          "properties": {
+            "storages": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAddParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storages"
+          ]
+        },
+        "VolumeAttachmentDetails": {
+          "type": "object",
+          "properties": {
+            "VolumeAttachmentInfo": {
+              "$ref": "#/definitions/VolumeAttachmentInfo"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "VolumeAttachmentInfo"
+          ]
+        },
+        "VolumeAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "bus-address": {
+              "type": "string"
+            },
+            "device-link": {
+              "type": "string"
+            },
+            "device-name": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeDetails": {
+          "type": "object",
+          "properties": {
+            "info": {
+              "$ref": "#/definitions/VolumeInfo"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machine-attachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/VolumeAttachmentDetails"
+                }
+              }
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "storage": {
+              "$ref": "#/definitions/StorageDetails"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "info",
+            "status"
+          ]
+        },
+        "VolumeDetailsListResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeDetails"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeDetailsListResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeDetailsListResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeFilter": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeFilters": {
+          "type": "object",
+          "properties": {
+            "filters": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeFilter"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeInfo": {
+          "type": "object",
+          "properties": {
+            "hardware-id": {
+              "type": "string"
+            },
+            "persistent": {
+              "type": "boolean"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "wwn": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-id",
+            "size",
+            "persistent"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "StorageProvisioner",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AttachmentLife": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FilesystemAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/FilesystemAttachmentParamsResults"
+            }
+          }
+        },
+        "FilesystemAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/FilesystemAttachmentResults"
+            }
+          }
+        },
+        "FilesystemParams": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/FilesystemParamsResults"
+            }
+          }
+        },
+        "Filesystems": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/FilesystemResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "RemoveAttachment": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetFilesystemAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FilesystemAttachments"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetFilesystemInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Filesystems"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetVolumeAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/VolumeAttachments"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetVolumeInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Volumes"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "VolumeAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/VolumeAttachmentParamsResults"
+            }
+          }
+        },
+        "VolumeAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/VolumeAttachmentResults"
+            }
+          }
+        },
+        "VolumeBlockDevices": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineStorageIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/BlockDeviceResults"
+            }
+          }
+        },
+        "VolumeParams": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/VolumeParamsResults"
+            }
+          }
+        },
+        "Volumes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/VolumeResults"
+            }
+          }
+        },
+        "WatchBlockDevices": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchFilesystemAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineStorageIdsWatchResults"
+            }
+          }
+        },
+        "WatchFilesystems": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchMachines": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchVolumeAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineStorageIdsWatchResults"
+            }
+          }
+        },
+        "WatchVolumes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "BlockDevice": {
+          "type": "object",
+          "properties": {
+            "BusAddress": {
+              "type": "string"
+            },
+            "DeviceLinks": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DeviceName": {
+              "type": "string"
+            },
+            "FilesystemType": {
+              "type": "string"
+            },
+            "HardwareId": {
+              "type": "string"
+            },
+            "InUse": {
+              "type": "boolean"
+            },
+            "Label": {
+              "type": "string"
+            },
+            "MountPoint": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            },
+            "UUID": {
+              "type": "string"
+            },
+            "WWN": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "DeviceName",
+            "DeviceLinks",
+            "Label",
+            "UUID",
+            "HardwareId",
+            "WWN",
+            "BusAddress",
+            "Size",
+            "FilesystemType",
+            "InUse",
+            "MountPoint"
+          ]
+        },
+        "BlockDeviceResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/BlockDevice"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "BlockDeviceResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BlockDeviceResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Filesystem": {
+          "type": "object",
+          "properties": {
+            "filesystem-tag": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/FilesystemInfo"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-tag",
+            "info"
+          ]
+        },
+        "FilesystemAttachment": {
+          "type": "object",
+          "properties": {
+            "filesystem-tag": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/FilesystemAttachmentInfo"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-tag",
+            "machine-tag",
+            "info"
+          ]
+        },
+        "FilesystemAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "mount-point": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "filesystem-id": {
+              "type": "string"
+            },
+            "filesystem-tag": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "mount-point": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-tag",
+            "machine-tag",
+            "provider"
+          ]
+        },
+        "FilesystemAttachmentParamsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/FilesystemAttachmentParams"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "FilesystemAttachmentParamsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemAttachmentParamsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemAttachmentResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/FilesystemAttachment"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "FilesystemAttachmentResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemAttachmentResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemAttachments": {
+          "type": "object",
+          "properties": {
+            "filesystem-attachments": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemAttachment"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-attachments"
+          ]
+        },
+        "FilesystemInfo": {
+          "type": "object",
+          "properties": {
+            "filesystem-id": {
+              "type": "string"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-id",
+            "pool",
+            "size"
+          ]
+        },
+        "FilesystemParams": {
+          "type": "object",
+          "properties": {
+            "attachment": {
+              "$ref": "#/definitions/FilesystemAttachmentParams"
+            },
+            "attributes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "filesystem-tag": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystem-tag",
+            "size",
+            "provider"
+          ]
+        },
+        "FilesystemParamsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/FilesystemParams"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "FilesystemParamsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemParamsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "FilesystemResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/Filesystem"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "FilesystemResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/FilesystemResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Filesystems": {
+          "type": "object",
+          "properties": {
+            "filesystems": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Filesystem"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "filesystems"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineStorageId": {
+          "type": "object",
+          "properties": {
+            "attachment-tag": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "attachment-tag"
+          ]
+        },
+        "MachineStorageIds": {
+          "type": "object",
+          "properties": {
+            "ids": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageId"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ids"
+          ]
+        },
+        "MachineStorageIdsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageId"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id",
+            "changes"
+          ]
+        },
+        "MachineStorageIdsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageIdsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Volume": {
+          "type": "object",
+          "properties": {
+            "info": {
+              "$ref": "#/definitions/VolumeInfo"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "info"
+          ]
+        },
+        "VolumeAttachment": {
+          "type": "object",
+          "properties": {
+            "info": {
+              "$ref": "#/definitions/VolumeAttachmentInfo"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "machine-tag",
+            "info"
+          ]
+        },
+        "VolumeAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "bus-address": {
+              "type": "string"
+            },
+            "device-link": {
+              "type": "string"
+            },
+            "device-name": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "instance-id": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "machine-tag",
+            "provider"
+          ]
+        },
+        "VolumeAttachmentParamsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/VolumeAttachmentParams"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "VolumeAttachmentParamsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeAttachmentParamsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeAttachmentResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/VolumeAttachment"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "VolumeAttachmentResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeAttachmentResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeAttachments": {
+          "type": "object",
+          "properties": {
+            "volume-attachments": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeAttachment"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-attachments"
+          ]
+        },
+        "VolumeInfo": {
+          "type": "object",
+          "properties": {
+            "hardware-id": {
+              "type": "string"
+            },
+            "persistent": {
+              "type": "boolean"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "wwn": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-id",
+            "size",
+            "persistent"
+          ]
+        },
+        "VolumeParams": {
+          "type": "object",
+          "properties": {
+            "attachment": {
+              "$ref": "#/definitions/VolumeAttachmentParams"
+            },
+            "attributes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "size",
+            "provider"
+          ]
+        },
+        "VolumeParamsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/VolumeParams"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "VolumeParamsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeParamsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/Volume"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "VolumeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Volumes": {
+          "type": "object",
+          "properties": {
+            "volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Volume"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volumes"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "StringsWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Subnets",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddSubnetsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "AllSpaces": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/SpaceResults"
+            }
+          }
+        },
+        "AllZones": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ZoneResults"
+            }
+          }
+        },
+        "ListSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SubnetsFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListSubnetsResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddSubnetParams": {
+          "type": "object",
+          "properties": {
+            "provider-network-id": {
+              "type": "string"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "subnet-provider-id": {
+              "type": "string"
+            },
+            "subnet-tag": {
+              "type": "string"
+            },
+            "vlan-tag": {
+              "type": "integer"
+            },
+            "zones": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "space-tag"
+          ]
+        },
+        "AddSubnetsParams": {
+          "type": "object",
+          "properties": {
+            "subnets": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddSubnetParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "subnets"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ListSubnetsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Subnet"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "SpaceResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "SpaceResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SpaceResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Subnet": {
+          "type": "object",
+          "properties": {
+            "cidr": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-network-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "space-tag": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "vlan-tag": {
+              "type": "integer"
+            },
+            "zones": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "cidr",
+            "vlan-tag",
+            "life",
+            "space-tag",
+            "zones"
+          ]
+        },
+        "SubnetsFilters": {
+          "type": "object",
+          "properties": {
+            "space-tag": {
+              "type": "string"
+            },
+            "zone": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ZoneResult": {
+          "type": "object",
+          "properties": {
+            "available": {
+              "type": "boolean"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "available"
+          ]
+        },
+        "ZoneResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ZoneResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Undertaker",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/UndertakerModelInfoResult"
+            }
+          }
+        },
+        "ProcessDyingModel": {
+          "type": "object"
+        },
+        "RemoveModel": {
+          "type": "object"
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchModelResources": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "UndertakerModelInfo": {
+          "type": "object",
+          "properties": {
+            "global-name": {
+              "type": "string"
+            },
+            "is-system": {
+              "type": "boolean"
+            },
+            "life": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "global-name",
+            "is-system",
+            "life"
+          ]
+        },
+        "UndertakerModelInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/UndertakerModelInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "UnitAssigner",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AssignUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetAgentStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchUnitAssignments": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Uniter",
+    "Version": 5,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "Actions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionResults"
+            }
+          }
+        },
+        "AddMetricBatches": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MetricBatchParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "AddUnitStorage": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StoragesAddParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "AllMachinePorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachinePortsResults"
+            }
+          }
+        },
+        "ApplicationStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ApplicationStatusResults"
+            }
+          }
+        },
+        "AssignedMachine": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "AvailabilityZone": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "BeginActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "CharmArchiveSha256": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmURLs"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "CharmModifiedVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/IntResults"
+            }
+          }
+        },
+        "CharmURL": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringBoolResults"
+            }
+          }
+        },
+        "ClearResolved": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ClosePorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntitiesPortRanges"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ConfigSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ConfigSettingsResults"
+            }
+          }
+        },
+        "CurrentModel": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelResult"
+            }
+          }
+        },
+        "Destroy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "DestroyAllSubordinates": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "DestroyUnitStorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "EnterScope": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FinishActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ActionExecutionResults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "GetMeterStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MeterStatusResults"
+            }
+          }
+        },
+        "GetPrincipal": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringBoolResults"
+            }
+          }
+        },
+        "HasSubordinates": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/BoolResults"
+            }
+          }
+        },
+        "JoinedRelations": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        },
+        "LeaveScope": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "Merge": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MergeLeadershipSettingsBulkParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "NetworkInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/NetworkInfoParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/NetworkInfoResults"
+            }
+          }
+        },
+        "OpenPorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntitiesPortRanges"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "PrivateAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "ProviderType": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "Read": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/GetLeadershipSettingsBulkResults"
+            }
+          }
+        },
+        "ReadRemoteSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnitPairs"
+            },
+            "Result": {
+              "$ref": "#/definitions/SettingsResults"
+            }
+          }
+        },
+        "ReadSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/SettingsResults"
+            }
+          }
+        },
+        "Relation": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/RelationResults"
+            }
+          }
+        },
+        "RelationById": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/RelationResults"
+            }
+          }
+        },
+        "RemoveStorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "RequestReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Resolved": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ResolvedModeResults"
+            }
+          }
+        },
+        "SLALevel": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "SetAgentStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetApplicationStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetCharmURL": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntitiesCharmURL"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetUnitStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetWorkloadVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityWorkloadVersions"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StorageAttachmentLife": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "StorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/StorageAttachmentResults"
+            }
+          }
+        },
+        "UnitStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "UnitStorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StorageAttachmentIdsResults"
+            }
+          }
+        },
+        "UpdateSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnitsSettings"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchActionNotifications": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchConfigSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchLeadershipSettings": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchMeterStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchRelationUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/RelationUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/RelationUnitsWatchResults"
+            }
+          }
+        },
+        "WatchStorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchUnitAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
+        "WatchUnitRelations": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchUnitStorageAttachments": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WorkloadVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "Action": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "parameters": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "receiver": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "receiver",
+            "name"
+          ]
+        },
+        "ActionExecutionResult": {
+          "type": "object",
+          "properties": {
+            "action-tag": {
+              "type": "string"
+            },
+            "message": {
+              "type": "string"
+            },
+            "results": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "action-tag",
+            "status"
+          ]
+        },
+        "ActionExecutionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionExecutionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionResult": {
+          "type": "object",
+          "properties": {
+            "action": {
+              "$ref": "#/definitions/Action"
+            },
+            "completed": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "enqueued": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "message": {
+              "type": "string"
+            },
+            "output": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "started": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ActionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "ApplicationStatusResult": {
+          "type": "object",
+          "properties": {
+            "application": {
+              "$ref": "#/definitions/StatusResult"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/StatusResult"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application",
+            "units"
+          ]
+        },
+        "ApplicationStatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ApplicationStatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "BoolResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "BoolResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BoolResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "CharmRelation": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "optional": {
+              "type": "boolean"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "optional",
+            "limit",
+            "scope"
+          ]
+        },
+        "CharmURL": {
+          "type": "object",
+          "properties": {
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url"
+          ]
+        },
+        "CharmURLs": {
+          "type": "object",
+          "properties": {
+            "urls": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CharmURL"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "urls"
+          ]
+        },
+        "ConfigSettingsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "settings"
+          ]
+        },
+        "ConfigSettingsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ConfigSettingsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Endpoint": {
+          "type": "object",
+          "properties": {
+            "application-name": {
+              "type": "string"
+            },
+            "relation": {
+              "$ref": "#/definitions/CharmRelation"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-name",
+            "relation"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesCharmURL": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityCharmURL"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesPortRanges": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPortRange"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityCharmURL": {
+          "type": "object",
+          "properties": {
+            "charm-url": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "charm-url"
+          ]
+        },
+        "EntityPortRange": {
+          "type": "object",
+          "properties": {
+            "from-port": {
+              "type": "integer"
+            },
+            "protocol": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            },
+            "to-port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "protocol",
+            "from-port",
+            "to-port"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "EntityWorkloadVersion": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            },
+            "workload-version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "workload-version"
+          ]
+        },
+        "EntityWorkloadVersions": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityWorkloadVersion"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "GetLeadershipSettingsBulkResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/GetLeadershipSettingsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "GetLeadershipSettingsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "settings"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "IntResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "IntResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/IntResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "InterfaceAddress": {
+          "type": "object",
+          "properties": {
+            "cidr": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "cidr"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachinePortRange": {
+          "type": "object",
+          "properties": {
+            "port-range": {
+              "$ref": "#/definitions/PortRange"
+            },
+            "relation-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit-tag",
+            "relation-tag",
+            "port-range"
+          ]
+        },
+        "MachinePortsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "ports": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePortRange"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ports"
+          ]
+        },
+        "MachinePortsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePortsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "MergeLeadershipSettingsBulkParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MergeLeadershipSettingsParam"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "MergeLeadershipSettingsParam": {
+          "type": "object",
+          "properties": {
+            "application-tag": {
+              "type": "string"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-tag",
+            "settings"
+          ]
+        },
+        "MeterStatusResult": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "code",
+            "info"
+          ]
+        },
+        "MeterStatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MeterStatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Metric": {
+          "type": "object",
+          "properties": {
+            "key": {
+              "type": "string"
+            },
+            "time": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "key",
+            "value",
+            "time"
+          ]
+        },
+        "MetricBatch": {
+          "type": "object",
+          "properties": {
+            "charm-url": {
+              "type": "string"
+            },
+            "created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "metrics": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Metric"
+              }
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "charm-url",
+            "created",
+            "metrics"
+          ]
+        },
+        "MetricBatchParam": {
+          "type": "object",
+          "properties": {
+            "batch": {
+              "$ref": "#/definitions/MetricBatch"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "batch"
+          ]
+        },
+        "MetricBatchParams": {
+          "type": "object",
+          "properties": {
+            "batches": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MetricBatchParam"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "batches"
+          ]
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid"
+          ]
+        },
+        "NetworkInfo": {
+          "type": "object",
+          "properties": {
+            "addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InterfaceAddress"
+              }
+            },
+            "interface-name": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "mac-address",
+            "interface-name",
+            "addresses"
+          ]
+        },
+        "NetworkInfoParams": {
+          "type": "object",
+          "properties": {
+            "bindings": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit",
+            "bindings"
+          ]
+        },
+        "NetworkInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "network-info": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkInfo"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "network-info"
+          ]
+        },
+        "NetworkInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/NetworkInfoResult"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "PortRange": {
+          "type": "object",
+          "properties": {
+            "from-port": {
+              "type": "integer"
+            },
+            "protocol": {
+              "type": "string"
+            },
+            "to-port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "from-port",
+            "to-port",
+            "protocol"
+          ]
+        },
+        "RelationIds": {
+          "type": "object",
+          "properties": {
+            "relation-ids": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation-ids"
+          ]
+        },
+        "RelationResult": {
+          "type": "object",
+          "properties": {
+            "endpoint": {
+              "$ref": "#/definitions/Endpoint"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "integer"
+            },
+            "key": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life",
+            "id",
+            "key",
+            "endpoint"
+          ]
+        },
+        "RelationResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "RelationUnit": {
+          "type": "object",
+          "properties": {
+            "relation": {
+              "type": "string"
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation",
+            "unit"
+          ]
+        },
+        "RelationUnitPair": {
+          "type": "object",
+          "properties": {
+            "local-unit": {
+              "type": "string"
+            },
+            "relation": {
+              "type": "string"
+            },
+            "remote-unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation",
+            "local-unit",
+            "remote-unit"
+          ]
+        },
+        "RelationUnitPairs": {
+          "type": "object",
+          "properties": {
+            "relation-unit-pairs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationUnitPair"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation-unit-pairs"
+          ]
+        },
+        "RelationUnitSettings": {
+          "type": "object",
+          "properties": {
+            "relation": {
+              "type": "string"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation",
+            "unit",
+            "settings"
+          ]
+        },
+        "RelationUnits": {
+          "type": "object",
+          "properties": {
+            "relation-units": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationUnit"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation-units"
+          ]
+        },
+        "RelationUnitsChange": {
+          "type": "object",
+          "properties": {
+            "changed": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitSettings"
+                }
+              }
+            },
+            "departed": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changed"
+          ]
+        },
+        "RelationUnitsSettings": {
+          "type": "object",
+          "properties": {
+            "relation-units": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationUnitSettings"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "relation-units"
+          ]
+        },
+        "RelationUnitsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "$ref": "#/definitions/RelationUnitsChange"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id",
+            "changes"
+          ]
+        },
+        "RelationUnitsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationUnitsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ResolvedModeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "mode": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "mode"
+          ]
+        },
+        "ResolvedModeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResolvedModeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "SettingsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "settings"
+          ]
+        },
+        "SettingsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SettingsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StatusResult": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "life",
+            "status",
+            "info",
+            "data",
+            "since"
+          ]
+        },
+        "StatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StorageAddParams": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "storage": {
+              "$ref": "#/definitions/StorageConstraints"
+            },
+            "unit": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "unit",
+            "name",
+            "storage"
+          ]
+        },
+        "StorageAttachment": {
+          "type": "object",
+          "properties": {
+            "kind": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
+            },
+            "location": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "storage-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storage-tag",
+            "owner-tag",
+            "unit-tag",
+            "kind",
+            "location",
+            "life"
+          ]
+        },
+        "StorageAttachmentId": {
+          "type": "object",
+          "properties": {
+            "storage-tag": {
+              "type": "string"
+            },
+            "unit-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storage-tag",
+            "unit-tag"
+          ]
+        },
+        "StorageAttachmentIds": {
+          "type": "object",
+          "properties": {
+            "ids": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAttachmentId"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ids"
+          ]
+        },
+        "StorageAttachmentIdsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/StorageAttachmentIds"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StorageAttachmentIdsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAttachmentIdsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageAttachmentResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/StorageAttachment"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StorageAttachmentResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAttachmentResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StorageConstraints": {
+          "type": "object",
+          "properties": {
+            "count": {
+              "type": "integer"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false
+        },
+        "StoragesAddParams": {
+          "type": "object",
+          "properties": {
+            "storages": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StorageAddParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "storages"
+          ]
+        },
+        "StringBoolResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "ok": {
+              "type": "boolean"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result",
+            "ok"
+          ]
+        },
+        "StringBoolResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringBoolResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UnitSettings": {
+          "type": "object",
+          "properties": {
+            "version": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Upgrader",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "DesiredVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/VersionResults"
+            }
+          }
+        },
+        "SetTools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntitiesVersion"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ToolsResults"
+            }
+          }
+        },
+        "WatchAPIVersion": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Binary": {
+          "type": "object",
+          "properties": {
+            "Arch": {
+              "type": "string"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Number",
+            "Series",
+            "Arch"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesVersion": {
+          "type": "object",
+          "properties": {
+            "agent-tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityVersion"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "agent-tools"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityVersion": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            },
+            "tools": {
+              "$ref": "#/definitions/Version"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "tools"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "sha256": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "url",
+            "size"
+          ]
+        },
+        "ToolsResult": {
+          "type": "object",
+          "properties": {
+            "disable-ssl-hostname-verification": {
+              "type": "boolean"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tools",
+            "disable-ssl-hostname-verification"
+          ]
+        },
+        "ToolsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ToolsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Version": {
+          "type": "object",
+          "properties": {
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        },
+        "VersionResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false
+        },
+        "VersionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VersionResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "UserManager",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddUser": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddUsers"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddUserResults"
+            }
+          }
+        },
+        "DisableUser": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "EnableUser": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "RemoveUser": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetPassword": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UserInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UserInfoRequest"
+            },
+            "Result": {
+              "$ref": "#/definitions/UserInfoResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddUser": {
+          "type": "object",
+          "properties": {
+            "display-name": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "username",
+            "display-name"
+          ]
+        },
+        "AddUserResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "secret-key": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "AddUserResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddUserResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "AddUsers": {
+          "type": "object",
+          "properties": {
+            "users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddUser"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "users"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityPassword": {
+          "type": "object",
+          "properties": {
+            "password": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "password"
+          ]
+        },
+        "EntityPasswords": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "UserInfo": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "created-by": {
+              "type": "string"
+            },
+            "date-created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "disabled": {
+              "type": "boolean"
+            },
+            "display-name": {
+              "type": "string"
+            },
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "username": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "username",
+            "display-name",
+            "access",
+            "created-by",
+            "date-created",
+            "disabled"
+          ]
+        },
+        "UserInfoRequest": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "include-disabled": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities",
+            "include-disabled"
+          ]
+        },
+        "UserInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/UserInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "VolumeAttachmentsWatcher",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MachineStorageIdsWatchResult"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineStorageId": {
+          "type": "object",
+          "properties": {
+            "attachment-tag": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "attachment-tag"
+          ]
+        },
+        "MachineStorageIdsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageId"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id",
+            "changes"
+          ]
+        }
+      }
+    }
+  }
+]
deleted file mode 100644 (file)
index d8f6f2be645ad25fe20e71f981a35c3b8c745f9f..0000000000000000000000000000000000000000
+++ /dev/null
-[
-  {
-    "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"
-            },
-            "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",
-            "provider-type",
-            "default-series",
-            "cloud-tag",
-            "owner-tag",
-            "life",
-            "status",
-            "users",
-            "machines",
-            "sla"
-          ]
-        },
-        "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": {
-            "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": {
-            "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": {
-            "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",
-            "provider-type",
-            "default-series",
-            "cloud-tag",
-            "owner-tag",
-            "life",
-            "status",
-            "users",
-            "machines",
-            "sla"
-          ]
-        },
-        "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"
-          ]
-        },
-        "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": {
-        "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"
-            }
-          },
-          "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"
-          ]
-        }
-      }
-    }
-  }
-]
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..a2dddcf40734c388f1a958109431b2a4bf4a7176
--- /dev/null
@@ -0,0 +1 @@
+schemas-juju-2.2-rc1.json
\ No newline at end of file
diff --git a/tests/unit/test_overrides.py b/tests/unit/test_overrides.py
new file mode 100644 (file)
index 0000000..6485408
--- /dev/null
@@ -0,0 +1,76 @@
+import pytest
+
+from juju.client.overrides import Number, Binary  # noqa
+
+
+# test cases ported from:
+# https://github.com/juju/version/blob/master/version_test.go
+@pytest.mark.parametrize("input,expected", (
+    (None, Number(major=0, minor=0, patch=0, tag='', build=0)),
+    (Number(major=1, minor=0, patch=0), Number(major=1, minor=0, patch=0)),
+    ({'major': 1, 'minor': 0, 'patch': 0}, Number(major=1, minor=0, patch=0)),
+    ("0.0.1", Number(major=0, minor=0, patch=1)),
+    ("0.0.2", Number(major=0, minor=0, patch=2)),
+    ("0.1.0", Number(major=0, minor=1, patch=0)),
+    ("0.2.3", Number(major=0, minor=2, patch=3)),
+    ("1.0.0", Number(major=1, minor=0, patch=0)),
+    ("10.234.3456", Number(major=10, minor=234, patch=3456)),
+    ("10.234.3456.1", Number(major=10, minor=234, patch=3456, build=1)),
+    ("10.234.3456.64", Number(major=10, minor=234, patch=3456, build=64)),
+    ("10.235.3456", Number(major=10, minor=235, patch=3456)),
+    ("1.21-alpha1", Number(major=1, minor=21, patch=1, tag="alpha")),
+    ("1.21-alpha1.1", Number(major=1, minor=21, patch=1, tag="alpha",
+                             build=1)),
+    ("1.21-alpha10", Number(major=1, minor=21, patch=10, tag="alpha")),
+    ("1.21.0", Number(major=1, minor=21)),
+    ("1234567890.2.1", TypeError),
+    ("0.2..1", TypeError),
+    ("1.21.alpha1", TypeError),
+    ("1.21-alpha", TypeError),
+    ("1.21-alpha1beta", TypeError),
+    ("1.21-alpha-dev", TypeError),
+    ("1.21-alpha_dev3", TypeError),
+    ("1.21-alpha123dev3", TypeError),
+))
+def test_number(input, expected):
+    if expected is TypeError:
+        with pytest.raises(expected):
+            Number.from_json(input)
+    else:
+        result = Number.from_json(input)
+        assert result == expected
+        if isinstance(input, str):
+            assert result.to_json() == input
+
+
+# test cases ported from:
+# https://github.com/juju/version/blob/master/version_test.go
+@pytest.mark.parametrize("input,expected", (
+    (None, Binary(Number(), None, None)),
+    (Binary(Number(1), 'trusty', 'amd64'), Binary(Number(1),
+                                                  'trusty', 'amd64')),
+    ({'number': {'major': 1},
+      'series': 'trusty',
+      'arch': 'amd64'}, Binary(Number(1), 'trusty', 'amd64')),
+    ("1.2.3-trusty-amd64", Binary(Number(1, 2, 3, "", 0),
+                                  "trusty", "amd64")),
+    ("1.2.3.4-trusty-amd64", Binary(Number(1, 2, 3, "", 4),
+                                    "trusty", "amd64")),
+    ("1.2-alpha3-trusty-amd64", Binary(Number(1, 2, 3, "alpha", 0),
+                                       "trusty", "amd64")),
+    ("1.2-alpha3.4-trusty-amd64", Binary(Number(1, 2, 3, "alpha", 4),
+                                         "trusty", "amd64")),
+    ("1.2.3", TypeError),
+    ("1.2-beta1", TypeError),
+    ("1.2.3--amd64", TypeError),
+    ("1.2.3-trusty-", TypeError),
+))
+def test_binary(input, expected):
+    if expected is TypeError:
+        with pytest.raises(expected):
+            Binary.from_json(input)
+    else:
+        result = Binary.from_json(input)
+        assert result == expected
+        if isinstance(input, str):
+            assert result.to_json() == input