Fix exception messages and lint error
[osm/N2VC.git] / juju / client / schemas.json
index 90ba2bb..474b204 100644 (file)
             }
           }
         },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
         "GetEntities": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "WatchCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        },
         "WatchForModelConfigChanges": {
           "type": "object",
           "properties": {
             "config"
           ]
         },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
         "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "NotifyWatcherId"
           ]
         },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
         "StateServingInfo": {
           "type": "object",
           "properties": {
   },
   {
     "Name": "Application",
-    "Version": 1,
+    "Version": 3,
     "Schema": {
       "type": "object",
       "properties": {
             "charm-url": {
               "type": "string"
             },
+            "config-settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "config-settings-yaml": {
+              "type": "string"
+            },
             "force-series": {
               "type": "boolean"
             },
                   "type": "string"
                 }
               }
+            },
+            "storage-constraints": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/StorageConstraints"
+                }
+              }
             }
           },
           "additionalProperties": false,
             "constraints"
           ]
         },
+        "StorageConstraints": {
+          "type": "object",
+          "properties": {
+            "count": {
+              "type": "integer"
+            },
+            "pool": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false
+        },
         "StringResult": {
           "type": "object",
           "properties": {
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
       }
     }
   },
+  {
+    "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,
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/GetBundleChangesParams"
+              "$ref": "#/definitions/BundleChangesParams"
             },
             "Result": {
-              "$ref": "#/definitions/GetBundleChangesResults"
+              "$ref": "#/definitions/BundleChangesResults"
             }
           }
         },
             }
           }
         },
-        "ModelDefaults": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelDefaultsResult"
-            }
-          }
-        },
         "ModelGet": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "SetModelDefaults": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetModelDefaults"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
         "StatusHistory": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "UnsetModelDefaults": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/UnsetModelDefaults"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
         "WatchAll": {
           "type": "object",
           "properties": {
             "Arch"
           ]
         },
-        "BundleChangesChange": {
+        "BundleChange": {
           "type": "object",
           "properties": {
             "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": {
               "items": {
                 "$ref": "#/definitions/RelationStatus"
               }
+            },
+            "remote-applications": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RemoteApplicationStatus"
+                }
+              }
             }
           },
           "additionalProperties": false,
             "model",
             "machines",
             "applications",
+            "remote-applications",
             "relations"
           ]
         },
-        "GetBundleChangesParams": {
-          "type": "object",
-          "properties": {
-            "yaml": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "yaml"
-          ]
-        },
-        "GetBundleChangesResults": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BundleChangesChange"
-              }
-            },
-            "errors": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
         "GetConstraintsResults": {
           "type": "object",
           "properties": {
             "agent-status": {
               "$ref": "#/definitions/DetailedStatus"
             },
+            "constraints": {
+              "type": "string"
+            },
             "containers": {
               "type": "object",
               "patternProperties": {
             "instance-status": {
               "$ref": "#/definitions/DetailedStatus"
             },
+            "ip-addresses": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
             "jobs": {
               "type": "array",
               "items": {
             "agent-status",
             "instance-status",
             "dns-name",
+            "ip-addresses",
             "instance-id",
             "series",
             "id",
             "containers",
+            "constraints",
             "hardware",
             "jobs",
             "has-vote",
             "config"
           ]
         },
-        "ModelDefaultValues": {
+        "ModelInfo": {
           "type": "object",
           "properties": {
+            "cloud-credential-tag": {
+              "type": "string"
+            },
             "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": {
-              "type": "string"
-            },
-            "cloud-credential-tag": {
-              "type": "string"
-            },
-            "cloud-region": {
-              "type": "string"
-            },
             "controller-uuid": {
               "type": "string"
             },
                 "$ref": "#/definitions/ModelMachineInfo"
               }
             },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
             "name": {
               "type": "string"
             },
             "controller-uuid",
             "provider-type",
             "default-series",
-            "cloud",
+            "cloud-tag",
             "owner-tag",
             "life",
             "status",
             "hardware": {
               "$ref": "#/definitions/MachineHardware"
             },
+            "has-vote": {
+              "type": "boolean"
+            },
             "id": {
               "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
             "id"
           ]
         },
+        "ModelMigrationStatus": {
+          "type": "object",
+          "properties": {
+            "end": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "start": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "start"
+          ]
+        },
         "ModelSet": {
           "type": "object",
           "properties": {
             "available-version": {
               "type": "string"
             },
-            "cloud": {
+            "cloud-tag": {
               "type": "string"
             },
             "migration": {
           "additionalProperties": false,
           "required": [
             "name",
-            "cloud",
+            "cloud-tag",
             "version",
             "available-version"
           ]
             "keys"
           ]
         },
-        "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": {
             "public-address"
           ]
         },
-        "RegionDefaults": {
+        "RelationStatus": {
           "type": "object",
           "properties": {
-            "region-name": {
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EndpointStatus"
+              }
+            },
+            "id": {
+              "type": "integer"
+            },
+            "interface": {
               "type": "string"
             },
-            "value": {
-              "type": "object",
-              "additionalProperties": true
+            "key": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "region-name",
-            "value"
+            "id",
+            "key",
+            "interface",
+            "scope",
+            "endpoints"
           ]
         },
-        "RelationStatus": {
+        "RemoteApplicationStatus": {
           "type": "object",
           "properties": {
+            "application-name": {
+              "type": "string"
+            },
+            "application-url": {
+              "type": "string"
+            },
             "endpoints": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EndpointStatus"
+                "$ref": "#/definitions/RemoteEndpoint"
               }
             },
-            "id": {
-              "type": "integer"
+            "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"
             },
-            "key": {
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "role": {
               "type": "string"
             },
             "scope": {
           },
           "additionalProperties": false,
           "required": [
-            "id",
-            "key",
+            "name",
+            "role",
             "interface",
-            "scope",
-            "endpoints"
+            "limit",
+            "scope"
           ]
         },
         "ResolveCharmResult": {
             "version"
           ]
         },
-        "SetModelDefaults": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelDefaultValues"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config"
-          ]
-        },
         "StatusHistoryFilter": {
           "type": "object",
           "properties": {
             "charm": {
               "type": "string"
             },
+            "leader": {
+              "type": "boolean"
+            },
             "machine": {
               "type": "string"
             },
             "subordinates"
           ]
         },
-        "UnsetModelDefaults": {
-          "type": "object",
-          "properties": {
-            "keys": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUnsetKeys"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "keys"
-          ]
-        },
         "Value": {
           "type": "object",
           "properties": {
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
             }
           }
         },
+        "InstanceTypes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CloudInstanceTypesConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/InstanceTypesResults"
+            }
+          }
+        },
         "RevokeCredentials": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "CloudRegion": {
+        "CloudInstanceTypesConstraint": {
           "type": "object",
           "properties": {
-            "endpoint": {
-              "type": "string"
-            },
-            "identity-endpoint": {
+            "cloud-tag": {
               "type": "string"
             },
-            "name": {
-              "type": "string"
+            "constraints": {
+              "$ref": "#/definitions/Value"
             },
-            "storage-endpoint": {
+            "region": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "name"
+            "cloud-tag",
+            "region"
           ]
         },
-        "CloudResult": {
+        "CloudInstanceTypesConstraints": {
           "type": "object",
           "properties": {
-            "cloud": {
-              "$ref": "#/definitions/Cloud"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "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
             "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
             }
           },
           "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
         }
       }
     }
             }
           }
         },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
         "GetControllerAccess": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "HostedModelConfigs": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/HostedModelConfigsResults"
+            }
+          }
+        },
         "InitiateMigration": {
           "type": "object",
           "properties": {
             "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": {
             "model-tag": {
               "type": "string"
             },
+            "skip-initial-prechecks": {
+              "type": "boolean"
+            },
             "target-info": {
               "$ref": "#/definitions/MigrationTargetInfo"
             }
           "required": [
             "model-tag",
             "target-info",
-            "external-control"
+            "external-control",
+            "skip-initial-prechecks"
           ]
         },
         "MigrationTargetInfo": {
             "hardware": {
               "$ref": "#/definitions/MachineHardware"
             },
+            "has-vote": {
+              "type": "boolean"
+            },
             "id": {
               "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
             "models"
           ]
         },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
         "ModifyControllerAccess": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
         "StateAddresses": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
         "WatchAPIHostPorts": {
           "type": "object",
           "properties": {
             "changes"
           ]
         },
-        "Error": {
+        "EntityStatusArgs": {
           "type": "object",
           "properties": {
-            "code": {
-              "type": "string"
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
             "info": {
-              "$ref": "#/definitions/ErrorInfo"
+              "type": "string"
             },
-            "message": {
+            "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"
             }
           },
             "NotifyWatcherId"
           ]
         },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
         "StringResult": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
         "GetExposed": {
           "type": "object",
           "properties": {
             "config"
           ]
         },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
         "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "constraints": {
               "$ref": "#/definitions/Value"
             },
-            "model-tag": {
-              "type": "string"
-            },
             "num-controllers": {
               "type": "integer"
             },
           },
           "additionalProperties": false,
           "required": [
-            "model-tag",
             "num-controllers"
           ]
         },
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
               "$ref": "#/definitions/AddMachinesResults"
             }
           }
+        },
+        "InstanceTypes": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelInstanceTypesConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/InstanceTypesResults"
+            }
+          }
         }
       },
       "definitions": {
           },
           "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": {
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
             "provider-vlan-id": {
               "type": "string"
             },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
             "vlan-tag": {
               "type": "integer"
             }
             "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": {
             "agent-version": {
               "$ref": "#/definitions/Number"
             },
+            "controller-agent-version": {
+              "$ref": "#/definitions/Number"
+            },
             "name": {
               "type": "string"
             },
             "uuid",
             "name",
             "owner-tag",
-            "agent-version"
+            "agent-version",
+            "controller-agent-version"
           ]
         },
         "MigrationSpec": {
             "model-tag": {
               "type": "string"
             },
+            "skip-initial-prechecks": {
+              "type": "boolean"
+            },
             "target-info": {
               "$ref": "#/definitions/MigrationTargetInfo"
             }
           "required": [
             "model-tag",
             "target-info",
-            "external-control"
+            "external-control",
+            "skip-initial-prechecks"
           ]
         },
         "MigrationTargetInfo": {
                 "type": "string"
               }
             },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
             "tools": {
               "type": "array",
               "items": {
           "required": [
             "bytes",
             "charms",
-            "tools"
+            "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": {
             "attempt": {
               "type": "integer"
             },
+            "external-control": {
+              "type": "boolean"
+            },
             "migration-id": {
               "type": "string"
             },
             "migration-id",
             "attempt",
             "phase",
+            "external-control",
             "source-api-addrs",
             "source-ca-cert",
             "target-api-addrs",
             }
           }
         },
+        "AdoptResources": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AdoptResourcesArgs"
+            }
+          }
+        },
         "Import": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "LatestLogTime": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            },
+            "Result": {
+              "type": "string",
+              "format": "date-time"
+            }
+          }
+        },
         "Prechecks": {
           "type": "object",
           "properties": {
         }
       },
       "definitions": {
-        "MigrationModelInfo": {
+        "AdoptResourcesArgs": {
           "type": "object",
           "properties": {
-            "agent-version": {
+            "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": {
             "uuid",
             "name",
             "owner-tag",
-            "agent-version"
+            "agent-version",
+            "controller-agent-version"
           ]
         },
         "ModelArgs": {
                 "type": "string"
               }
             },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
             "tools": {
               "type": "array",
               "items": {
           "required": [
             "bytes",
             "charms",
-            "tools"
+            "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": {
     "Schema": {
       "type": "object",
       "properties": {
-        "ModelDefaults": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelDefaultsResult"
-            }
-          }
-        },
         "ModelGet": {
           "type": "object",
           "properties": {
               "$ref": "#/definitions/ModelUnset"
             }
           }
-        },
-        "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": {
             "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
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
         "ModelConfigResults": {
           "type": "object",
           "properties": {
             "config"
           ]
         },
-        "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"
-          ]
-        },
         "ModelSet": {
           "type": "object",
           "properties": {
           "required": [
             "keys"
           ]
-        },
-        "ModelUnsetKeys": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CreateModel": {
           "type": "object",
           "properties": {
-            "cloud-region": {
-              "type": "string"
-            },
-            "cloud-tag": {
-              "type": "string"
-            },
-            "keys": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "keys"
-          ]
-        },
-        "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"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "ModelManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "CreateModel": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelCreateArgs"
+            "Params": {
+              "$ref": "#/definitions/ModelCreateArgs"
             },
             "Result": {
               "$ref": "#/definitions/ModelInfo"
             }
           }
         },
-        "DestroyModel": {
-          "type": "object"
-        },
         "DestroyModels": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "ModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelDefaultsResult"
+            }
+          }
+        },
         "ModelInfo": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelStatusResults"
+            }
+          }
+        },
         "ModifyModelAccess": {
           "type": "object",
           "properties": {
               "$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": {
             "owner-tag"
           ]
         },
-        "ModelInfo": {
+        "ModelDefaultValues": {
           "type": "object",
           "properties": {
-            "cloud": {
+            "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"
             },
                 "$ref": "#/definitions/ModelMachineInfo"
               }
             },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
             "name": {
               "type": "string"
             },
             "controller-uuid",
             "provider-type",
             "default-series",
-            "cloud",
+            "cloud-tag",
             "owner-tag",
             "life",
             "status",
             "hardware": {
               "$ref": "#/definitions/MachineHardware"
             },
+            "has-vote": {
+              "type": "boolean"
+            },
             "id": {
               "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
             "id"
           ]
         },
-        "ModelUserInfo": {
+        "ModelMigrationStatus": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "display-name": {
-              "type": "string"
+            "end": {
+              "type": "string",
+              "format": "date-time"
             },
-            "last-connection": {
+            "start": {
               "type": "string",
               "format": "date-time"
             },
-            "user": {
+            "status": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user",
-            "display-name",
-            "last-connection",
-            "access"
+            "status",
+            "start"
           ]
         },
-        "ModifyModelAccess": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
+            "application-count": {
+              "type": "integer"
             },
-            "action": {
+            "hosted-machine-count": {
+              "type": "integer"
+            },
+            "life": {
               "type": "string"
             },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
             "model-tag": {
               "type": "string"
             },
-            "user-tag": {
+            "owner-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-tag",
-            "action",
-            "access",
-            "model-tag"
+            "model-tag",
+            "life",
+            "hosted-machine-count",
+            "application-count",
+            "owner-tag"
           ]
         },
-        "ModifyModelAccessRequest": {
+        "ModelStatusResults": {
           "type": "object",
           "properties": {
-            "changes": {
+            "models": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModifyModelAccess"
+                "$ref": "#/definitions/ModelStatus"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "changes"
+            "models"
           ]
         },
-        "UserModel": {
+        "ModelUnsetKeys": {
           "type": "object",
           "properties": {
-            "last-connection": {
-              "type": "string",
-              "format": "date-time"
+            "cloud-region": {
+              "type": "string"
             },
-            "model": {
-              "$ref": "#/definitions/Model"
-            }
+            "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": [
     }
   },
   {
-    "Name": "Pinger",
+    "Name": "Payloads",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Ping": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "Provisioner",
-    "Version": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
+        "List": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/EnvListArgs"
+            },
             "Result": {
-              "$ref": "#/definitions/StringsResult"
+              "$ref": "#/definitions/EnvListResults"
             }
           }
-        },
-        "APIHostPorts": {
+        }
+      },
+      "definitions": {
+        "EnvListArgs": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
+            "patterns": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "patterns"
+          ]
         },
-        "CACert": {
+        "EnvListResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/BytesResult"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Payload"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
         },
-        "Constraints": {
+        "Payload": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "class": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/ConstraintsResults"
+            "id": {
+              "type": "string"
+            },
+            "labels": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "machine": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "unit": {
+              "type": "string"
             }
-          }
-        },
-        "ContainerConfig": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "class",
+            "type",
+            "id",
+            "status",
+            "labels",
+            "unit",
+            "machine"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "PayloadsHookContext",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
             "Result": {
-              "$ref": "#/definitions/ContainerConfig"
+              "$ref": "#/definitions/PayloadResults"
             }
           }
         },
-        "ContainerManagerConfig": {
+        "LookUp": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ContainerManagerConfigParams"
+              "$ref": "#/definitions/LookUpArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ContainerManagerConfig"
+              "$ref": "#/definitions/PayloadResults"
             }
           }
         },
-        "ControllerConfig": {
+        "SetStatus": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatusArgs"
+            },
             "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
+              "$ref": "#/definitions/PayloadResults"
             }
           }
         },
-        "DistributionGroup": {
+        "Track": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/TrackArgs"
             },
             "Result": {
-              "$ref": "#/definitions/DistributionGroupResults"
+              "$ref": "#/definitions/PayloadResults"
             }
           }
         },
-        "EnsureDead": {
+        "Untrack": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/PayloadResults"
             }
           }
-        },
-        "FindTools": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/FindToolsParams"
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/FindToolsResult"
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
         },
-        "GetContainerInterfaceInfo": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+            "macaroon-path": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "InstanceId": {
+        "LookUpArg": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "id": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
+            "name": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "id"
+          ]
         },
-        "InstanceStatus": {
+        "LookUpArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LookUpArg"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "args"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Payload": {
+          "type": "object",
+          "properties": {
+            "class": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
+            "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"
+          ]
         },
-        "Life": {
+        "PayloadResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Entity": {
+              "$ref": "#/definitions/Entity"
             },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "not-found": {
+              "type": "boolean"
+            },
+            "payload": {
+              "$ref": "#/definitions/Payload"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "payload",
+            "not-found"
+          ]
         },
-        "MachinesWithTransientErrors": {
+        "PayloadResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/PayloadResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
         },
-        "MarkMachinesForRemoval": {
+        "SetStatusArg": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Entity": {
+              "$ref": "#/definitions/Entity"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "status": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "status"
+          ]
         },
-        "ModelConfig": {
+        "SetStatusArgs": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SetStatusArg"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "args"
+          ]
         },
-        "ModelUUID": {
+        "TrackArgs": {
+          "type": "object",
+          "properties": {
+            "payloads": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Payload"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "payloads"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Pinger",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Ping": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Provisioner",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/StringResult"
+              "$ref": "#/definitions/StringsResult"
             }
           }
         },
-        "PrepareContainerInterfaceInfo": {
+        "APIHostPorts": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+              "$ref": "#/definitions/APIHostPortsResult"
             }
           }
         },
-        "ProvisioningInfo": {
+        "CACert": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ProvisioningInfoResults"
+              "$ref": "#/definitions/BytesResult"
             }
           }
         },
-        "ReleaseContainerAddresses": {
+        "Constraints": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/ConstraintsResults"
             }
           }
         },
-        "Remove": {
+        "ContainerConfig": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/ContainerConfig"
             }
           }
         },
-        "Series": {
+        "ContainerManagerConfig": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$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": {
             }
           }
         },
+        "SetObservedNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
         "SetPasswords": {
           "type": "object",
           "properties": {
             "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": {
           },
           "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": {
             "provider-vlan-id": {
               "type": "string"
             },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
             "vlan-tag": {
               "type": "integer"
             }
             "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": {
             "jobs"
           ]
         },
-        "ProvisioningInfoResult": {
+        "ProvisioningInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ProvisioningInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "ProvisioningInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProvisioningInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "config"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Settings": {
+          "type": "object",
+          "properties": {
+            "Ftp": {
+              "type": "string"
+            },
+            "Http": {
+              "type": "string"
+            },
+            "Https": {
+              "type": "string"
+            },
+            "NoProxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Http",
+            "Https",
+            "Ftp",
+            "NoProxy"
+          ]
+        },
+        "StatusResult": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "life",
+            "status",
+            "info",
+            "data",
+            "since"
+          ]
+        },
+        "StatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        },
+        "StringsWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "sha256": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "url",
+            "size"
+          ]
+        },
+        "ToolsResult": {
+          "type": "object",
+          "properties": {
+            "disable-ssl-hostname-verification": {
+              "type": "boolean"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tools",
+            "disable-ssl-hostname-verification"
+          ]
+        },
+        "ToolsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ToolsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UpdateBehavior": {
+          "type": "object",
+          "properties": {
+            "enable-os-refresh-update": {
+              "type": "boolean"
+            },
+            "enable-os-upgrade": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "enable-os-refresh-update",
+            "enable-os-upgrade"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Volume": {
+          "type": "object",
+          "properties": {
+            "info": {
+              "$ref": "#/definitions/VolumeInfo"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "info"
+          ]
+        },
+        "VolumeAttachmentInfo": {
+          "type": "object",
+          "properties": {
+            "bus-address": {
+              "type": "string"
+            },
+            "device-link": {
+              "type": "string"
+            },
+            "device-name": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false
+        },
+        "VolumeAttachmentParams": {
+          "type": "object",
+          "properties": {
+            "instance-id": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            },
+            "provider": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            },
+            "volume-id": {
+              "type": "string"
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "machine-tag",
+            "provider"
+          ]
+        },
+        "VolumeInfo": {
+          "type": "object",
+          "properties": {
+            "hardware-id": {
+              "type": "string"
+            },
+            "persistent": {
+              "type": "boolean"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "volume-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-id",
+            "size",
+            "persistent"
+          ]
+        },
+        "VolumeParams": {
+          "type": "object",
+          "properties": {
+            "attachment": {
+              "$ref": "#/definitions/VolumeAttachmentParams"
+            },
+            "attributes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volume-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "volume-tag",
+            "size",
+            "provider"
+          ]
+        },
+        "WatchContainer": {
+          "type": "object",
+          "properties": {
+            "container-type": {
+              "type": "string"
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "container-type"
+          ]
+        },
+        "WatchContainers": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/WatchContainer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ProxyUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProxyConfigResults"
+            }
+          }
+        },
+        "WatchForProxyConfigAndAPIHostPortChanges": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "ftp": {
+              "type": "string"
+            },
+            "http": {
+              "type": "string"
+            },
+            "https": {
+              "type": "string"
+            },
+            "no-proxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "http",
+            "https",
+            "ftp",
+            "no-proxy"
+          ]
+        },
+        "ProxyConfigResult": {
+          "type": "object",
+          "properties": {
+            "apt-proxy-settings": {
+              "$ref": "#/definitions/ProxyConfig"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "proxy-settings": {
+              "$ref": "#/definitions/ProxyConfig"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "proxy-settings",
+            "apt-proxy-settings"
+          ]
+        },
+        "ProxyConfigResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProxyConfigResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Reboot",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ClearReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "GetRebootAction": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "result": {
-              "$ref": "#/definitions/ProvisioningInfo"
+            "Result": {
+              "$ref": "#/definitions/RebootActionResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
+          }
         },
-        "ProvisioningInfoResults": {
+        "RequestReboot": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ProvisioningInfoResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
+          }
         },
-        "SetStatus": {
+        "WatchForRebootEvent": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
           "type": "object",
           "properties": {
             "entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityStatusArgs"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
             "entities"
           ]
         },
-        "Settings": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Ftp": {
-              "type": "string"
-            },
-            "Http": {
-              "type": "string"
-            },
-            "Https": {
-              "type": "string"
-            },
-            "NoProxy": {
+            "tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Http",
-            "Https",
-            "Ftp",
-            "NoProxy"
+            "tag"
           ]
         },
-        "StatusResult": {
+        "Error": {
           "type": "object",
           "properties": {
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "id": {
+            "code": {
               "type": "string"
             },
             "info": {
-              "type": "string"
-            },
-            "life": {
-              "type": "string"
-            },
-            "since": {
-              "type": "string",
-              "format": "date-time"
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "status": {
+            "message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "id",
-            "life",
-            "status",
-            "info",
-            "data",
-            "since"
+            "message",
+            "code"
           ]
         },
-        "StatusResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StatusResult"
-              }
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
+          "additionalProperties": false
         },
-        "StringResult": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
             "error": {
               "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "result"
-          ]
+          "additionalProperties": false
         },
-        "StringResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
             "results"
           ]
         },
-        "StringsResult": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
             "error": {
               "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
         },
-        "StringsWatchResult": {
+        "RebootActionResult": {
           "type": "object",
           "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
             "error": {
               "$ref": "#/definitions/Error"
             },
-            "watcher-id": {
+            "result": {
               "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id"
-          ]
+          "additionalProperties": false
         },
-        "StringsWatchResults": {
+        "RebootActionResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringsWatchResult"
+                "$ref": "#/definitions/RebootActionResult"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
+          "additionalProperties": false
+        }
+      }
+    }
+  },
+  {
+    "Name": "RelationUnitsWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/RelationUnitsWatchResult"
+            }
+          }
         },
-        "Tools": {
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
           "type": "object",
           "properties": {
-            "sha256": {
+            "code": {
               "type": "string"
             },
-            "size": {
-              "type": "integer"
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "url": {
+            "message": {
               "type": "string"
-            },
-            "version": {
-              "$ref": "#/definitions/Binary"
             }
           },
           "additionalProperties": false,
           "required": [
-            "version",
-            "url",
-            "size"
+            "message",
+            "code"
           ]
         },
-        "ToolsResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "disable-ssl-hostname-verification": {
-              "type": "boolean"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "tools": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Tools"
-              }
+            "macaroon-path": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "tools",
-            "disable-ssl-hostname-verification"
-          ]
+          "additionalProperties": false
         },
-        "ToolsResults": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "RelationUnitsChange": {
           "type": "object",
           "properties": {
-            "results": {
+            "changed": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitSettings"
+                }
+              }
+            },
+            "departed": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ToolsResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "changed"
           ]
         },
-        "UpdateBehavior": {
+        "RelationUnitsWatchResult": {
           "type": "object",
           "properties": {
-            "enable-os-refresh-update": {
-              "type": "boolean"
+            "changes": {
+              "$ref": "#/definitions/RelationUnitsChange"
             },
-            "enable-os-upgrade": {
-              "type": "boolean"
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "enable-os-refresh-update",
-            "enable-os-upgrade"
+            "watcher-id",
+            "changes"
           ]
         },
-        "Value": {
+        "UnitSettings": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "container": {
-              "type": "string"
-            },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "instance-type": {
-              "type": "string"
-            },
-            "mem": {
-              "type": "integer"
-            },
-            "root-disk": {
+            "version": {
               "type": "integer"
-            },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "virt-type": {
-              "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "version"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "RemoteApplicationWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/RemoteApplicationWatchResult"
+            }
+          }
         },
-        "Volume": {
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
           "type": "object",
           "properties": {
+            "code": {
+              "type": "string"
+            },
             "info": {
-              "$ref": "#/definitions/VolumeInfo"
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "volume-tag": {
+            "message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-tag",
-            "info"
+            "message",
+            "code"
           ]
         },
-        "VolumeAttachmentInfo": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "bus-address": {
-              "type": "string"
-            },
-            "device-link": {
-              "type": "string"
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "device-name": {
+            "macaroon-path": {
               "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
             }
           },
           "additionalProperties": false
         },
-        "VolumeAttachmentParams": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "RemoteApplicationChange": {
           "type": "object",
           "properties": {
-            "instance-id": {
-              "type": "string"
-            },
-            "machine-tag": {
-              "type": "string"
-            },
-            "provider": {
+            "application-tag": {
               "type": "string"
             },
-            "read-only": {
-              "type": "boolean"
-            },
-            "volume-id": {
+            "life": {
               "type": "string"
             },
-            "volume-tag": {
-              "type": "string"
+            "relations": {
+              "$ref": "#/definitions/RemoteRelationsChange"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-tag",
-            "machine-tag",
-            "provider"
+            "application-tag",
+            "life",
+            "relations"
           ]
         },
-        "VolumeInfo": {
+        "RemoteApplicationWatchResult": {
           "type": "object",
           "properties": {
-            "hardware-id": {
-              "type": "string"
+            "change": {
+              "$ref": "#/definitions/RemoteApplicationChange"
             },
-            "persistent": {
-              "type": "boolean"
-            },
-            "size": {
-              "type": "integer"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "volume-id": {
+            "id": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-id",
-            "size",
-            "persistent"
+            "id"
           ]
         },
-        "VolumeParams": {
+        "RemoteEntityId": {
           "type": "object",
           "properties": {
-            "attachment": {
-              "$ref": "#/definitions/VolumeAttachmentParams"
-            },
-            "attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "provider": {
+            "model-uuid": {
               "type": "string"
             },
-            "size": {
-              "type": "integer"
-            },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "volume-tag": {
+            "token": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-tag",
-            "size",
-            "provider"
+            "model-uuid",
+            "token"
           ]
         },
-        "WatchContainer": {
+        "RemoteRelationChange": {
           "type": "object",
           "properties": {
-            "container-type": {
-              "type": "string"
+            "changed-units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RemoteRelationUnitChange"
+                }
+              }
             },
-            "machine-tag": {
+            "departed-units": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "id": {
+              "type": "integer"
+            },
+            "life": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "machine-tag",
-            "container-type"
+            "id",
+            "life"
           ]
         },
-        "WatchContainers": {
+        "RemoteRelationUnitChange": {
           "type": "object",
           "properties": {
-            "params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/WatchContainer"
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
               }
+            },
+            "unit-id": {
+              "$ref": "#/definitions/RemoteEntityId"
             }
           },
           "additionalProperties": false,
           "required": [
-            "params"
+            "unit-id"
           ]
-        }
-      }
-    }
-  },
-  {
-    "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": {
+        "RemoteRelationsChange": {
           "type": "object",
           "properties": {
-            "entities": {
+            "changed": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/RemoteRelationChange"
+              }
+            },
+            "initial": {
+              "type": "boolean"
+            },
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "entities"
+            "initial"
           ]
-        },
-        "Entity": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "RemoteRelationsWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
           "type": "object",
           "properties": {
-            "tag": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/RemoteRelationsWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
+          }
         },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           "type": "object",
           "additionalProperties": false
         },
-        "NotifyWatchResult": {
+        "RemoteEntityId": {
           "type": "object",
           "properties": {
-            "NotifyWatcherId": {
+            "model-uuid": {
               "type": "string"
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "token": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId"
+            "model-uuid",
+            "token"
           ]
         },
-        "NotifyWatchResults": {
+        "RemoteRelationChange": {
           "type": "object",
           "properties": {
-            "results": {
+            "changed-units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RemoteRelationUnitChange"
+                }
+              }
+            },
+            "departed-units": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "type": "string"
               }
+            },
+            "id": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "id",
+            "life"
           ]
         },
-        "ProxyConfig": {
+        "RemoteRelationUnitChange": {
           "type": "object",
           "properties": {
-            "ftp": {
-              "type": "string"
-            },
-            "http": {
-              "type": "string"
-            },
-            "https": {
-              "type": "string"
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "no-proxy": {
-              "type": "string"
+            "unit-id": {
+              "$ref": "#/definitions/RemoteEntityId"
             }
           },
           "additionalProperties": false,
           "required": [
-            "http",
-            "https",
-            "ftp",
-            "no-proxy"
+            "unit-id"
           ]
         },
-        "ProxyConfigResult": {
+        "RemoteRelationsChange": {
           "type": "object",
           "properties": {
-            "apt-proxy-settings": {
-              "$ref": "#/definitions/ProxyConfig"
+            "changed": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RemoteRelationChange"
+              }
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "initial": {
+              "type": "boolean"
             },
-            "proxy-settings": {
-              "$ref": "#/definitions/ProxyConfig"
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "proxy-settings",
-            "apt-proxy-settings"
+            "initial"
           ]
         },
-        "ProxyConfigResults": {
+        "RemoteRelationsWatchResult": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ProxyConfigResult"
-              }
+            "RemoteRelationsWatcherId": {
+              "type": "string"
+            },
+            "change": {
+              "$ref": "#/definitions/RemoteRelationsChange"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "RemoteRelationsWatcherId"
           ]
         }
       }
     }
   },
   {
-    "Name": "Reboot",
-    "Version": 2,
+    "Name": "Resources",
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "ClearReboot": {
+        "AddPendingResources": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/AddPendingResourcesArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/AddPendingResourcesResult"
             }
           }
         },
-        "GetRebootAction": {
+        "ListResources": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/ListResourcesArgs"
             },
             "Result": {
-              "$ref": "#/definitions/RebootActionResults"
+              "$ref": "#/definitions/ResourcesResults"
             }
           }
+        }
+      },
+      "definitions": {
+        "AddCharmWithAuthorization": {
+          "type": "object",
+          "properties": {
+            "channel": {
+              "type": "string"
+            },
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "url": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "url",
+            "channel",
+            "macaroon"
+          ]
         },
-        "RequestReboot": {
+        "AddPendingResourcesArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "AddCharmWithAuthorization": {
+              "$ref": "#/definitions/AddCharmWithAuthorization"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "Resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CharmResource"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "AddCharmWithAuthorization",
+            "Resources"
+          ]
         },
-        "WatchForRebootEvent": {
+        "AddPendingResourcesResult": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "pending-ids": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
-        }
-      },
-      "definitions": {
-        "Entities": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "pending-ids"
+          ]
+        },
+        "CharmResource": {
           "type": "object",
           "properties": {
-            "entities": {
+            "description": {
+              "type": "string"
+            },
+            "fingerprint": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "type": "integer"
               }
+            },
+            "name": {
+              "type": "string"
+            },
+            "origin": {
+              "type": "string"
+            },
+            "path": {
+              "type": "string"
+            },
+            "revision": {
+              "type": "integer"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "type": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "entities"
+            "name",
+            "type",
+            "path",
+            "origin",
+            "revision",
+            "fingerprint",
+            "size"
           ]
         },
         "Entity": {
           },
           "additionalProperties": false
         },
-        "ErrorResults": {
+        "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": {
-            "results": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "charm-store-resources": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/CharmResource"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Resource"
+              }
+            },
+            "unit-resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UnitResources"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "ErrorResult",
+            "resources",
+            "charm-store-resources",
+            "unit-resources"
           ]
         },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "NotifyWatchResult": {
+        "ResourcesResults": {
           "type": "object",
           "properties": {
-            "NotifyWatcherId": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResourcesResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId"
+            "results"
           ]
         },
-        "RebootActionResult": {
+        "UnitResources": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Entity": {
+              "$ref": "#/definitions/Entity"
             },
-            "result": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "RebootActionResults": {
-          "type": "object",
-          "properties": {
-            "results": {
+            "download-progress": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "integer"
+                }
+              }
+            },
+            "resources": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/RebootActionResult"
+                "$ref": "#/definitions/Resource"
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Entity",
+            "resources",
+            "download-progress"
+          ]
         }
       }
     }
   },
   {
-    "Name": "RelationUnitsWatcher",
+    "Name": "ResourcesHookContext",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Next": {
+        "GetResourceInfo": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/ListResourcesArgs"
+            },
             "Result": {
-              "$ref": "#/definitions/RelationUnitsWatchResult"
+              "$ref": "#/definitions/ResourcesResult"
             }
           }
-        },
-        "Stop": {
-          "type": "object"
         }
       },
       "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": {
           },
           "additionalProperties": false
         },
-        "Macaroon": {
+        "ErrorResult": {
           "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
           "additionalProperties": false
         },
-        "RelationUnitsChange": {
+        "ListResourcesArgs": {
           "type": "object",
           "properties": {
-            "changed": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/UnitSettings"
-                }
-              }
-            },
-            "departed": {
+            "resource-names": {
               "type": "array",
               "items": {
                 "type": "string"
           },
           "additionalProperties": false,
           "required": [
-            "changed"
+            "resource-names"
           ]
         },
-        "RelationUnitsWatchResult": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Resource": {
           "type": "object",
           "properties": {
-            "changes": {
-              "$ref": "#/definitions/RelationUnitsChange"
+            "CharmResource": {
+              "$ref": "#/definitions/CharmResource"
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "application": {
+              "type": "string"
             },
-            "watcher-id": {
+            "id": {
+              "type": "string"
+            },
+            "pending-id": {
+              "type": "string"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "username": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "watcher-id",
-            "changes"
+            "CharmResource",
+            "id",
+            "pending-id",
+            "application",
+            "username",
+            "timestamp"
           ]
         },
-        "UnitSettings": {
+        "ResourceResult": {
           "type": "object",
           "properties": {
-            "version": {
-              "type": "integer"
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "resource": {
+              "$ref": "#/definitions/Resource"
             }
           },
           "additionalProperties": false,
           "required": [
-            "version"
+            "ErrorResult",
+            "resource"
+          ]
+        },
+        "ResourcesResult": {
+          "type": "object",
+          "properties": {
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResourceResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "resources"
           ]
         }
       }
   },
   {
     "Name": "SSHClient",
-    "Version": 1,
+    "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
+        "AllAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHAddressesResults"
+            }
+          }
+        },
         "PrivateAddress": {
           "type": "object",
           "properties": {
             "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": {
             "provider-vlan-id": {
               "type": "string"
             },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
             "vlan-tag": {
               "type": "integer"
             }
             "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": {
             }
           }
         },
-        "CreateLocalLoginMacaroon": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/MacaroonResults"
-            }
-          }
-        },
         "DisableUser": {
           "type": "object",
           "properties": {
           "type": "object",
           "additionalProperties": false
         },
-        "MacaroonResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/Macaroon"
-            }
-          },
-          "additionalProperties": false
-        },
-        "MacaroonResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MacaroonResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
         "UserInfo": {
           "type": "object",
           "properties": {