Fix exception messages and lint error
[osm/N2VC.git] / juju / client / schemas.json
index cdbe0e2..474b204 100644 (file)
             }
           }
         },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
         "ControllerConfig": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "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": {
             "entities"
           ]
         },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "ControllerConfigResult": {
           "type": "object",
           "properties": {
             "config"
           ]
         },
+        "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": {
             },
             "constraints": {
               "$ref": "#/definitions/Value"
+            },
+            "series": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
             "application",
             "charm",
             "config",
-            "constraints"
+            "constraints",
+            "series"
           ]
         },
         "ApplicationMetricCredential": {
             "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,
                   "$ref": "#/definitions/CharmMetric"
                 }
               }
+            },
+            "plan": {
+              "$ref": "#/definitions/CharmPlan"
             }
           },
           "additionalProperties": false,
           "required": [
-            "metrics"
+            "metrics",
+            "plan"
           ]
         },
         "CharmOption": {
             "type"
           ]
         },
+        "CharmPlan": {
+          "type": "object",
+          "properties": {
+            "required": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "required"
+          ]
+        },
         "CharmRelation": {
           "type": "object",
           "properties": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/GetBundleChangesParams"
+              "$ref": "#/definitions/BundleChangesParams"
             },
             "Result": {
-              "$ref": "#/definitions/GetBundleChangesResults"
+              "$ref": "#/definitions/BundleChangesResults"
             }
           }
         },
             "Arch"
           ]
         },
-        "BundleChangesChange": {
+        "BundleChange": {
           "type": "object",
           "properties": {
             "args": {
             "requires"
           ]
         },
-        "ConfigValue": {
+        "BundleChangesParams": {
           "type": "object",
           "properties": {
-            "source": {
+            "yaml": {
               "type": "string"
-            },
-            "value": {
-              "type": "object",
-              "additionalProperties": true
             }
           },
           "additionalProperties": false,
           "required": [
-            "value",
-            "source"
+            "yaml"
           ]
         },
-        "Constraints": {
+        "BundleChangesResults": {
           "type": "object",
           "properties": {
-            "Count": {
-              "type": "integer"
-            },
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BundleChange"
+              }
+            },
+            "errors": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "source"
+          ]
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Count": {
+              "type": "integer"
+            },
             "Pool": {
               "type": "string"
             },
               "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": {
           "type": "object",
           "additionalProperties": false
         },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "MachineStatus": {
           "type": "object",
           "properties": {
             "agent-status": {
               "$ref": "#/definitions/DetailedStatus"
             },
+            "constraints": {
+              "type": "string"
+            },
             "containers": {
               "type": "object",
               "patternProperties": {
             "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",
         "ModelInfo": {
           "type": "object",
           "properties": {
-            "cloud": {
+            "cloud-credential-tag": {
               "type": "string"
             },
-            "cloud-credential": {
+            "cloud-region": {
               "type": "string"
             },
-            "cloud-region": {
+            "cloud-tag": {
               "type": "string"
             },
             "controller-uuid": {
             "life": {
               "type": "string"
             },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
             "name": {
               "type": "string"
             },
             "controller-uuid",
             "provider-type",
             "default-series",
-            "cloud",
+            "cloud-tag",
             "owner-tag",
             "life",
             "status",
-            "users"
+            "users",
+            "machines"
+          ]
+        },
+        "ModelMachineInfo": {
+          "type": "object",
+          "properties": {
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
+          ]
+        },
+        "ModelMigrationStatus": {
+          "type": "object",
+          "properties": {
+            "end": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "start": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "start"
           ]
         },
         "ModelSet": {
             "available-version": {
               "type": "string"
             },
-            "cloud": {
+            "cloud-tag": {
+              "type": "string"
+            },
+            "migration": {
               "type": "string"
             },
             "name": {
           "additionalProperties": false,
           "required": [
             "name",
-            "cloud",
+            "cloud-tag",
             "version",
             "available-version"
           ]
             "endpoints"
           ]
         },
+        "RemoteApplicationStatus": {
+          "type": "object",
+          "properties": {
+            "application-name": {
+              "type": "string"
+            },
+            "application-url": {
+              "type": "string"
+            },
+            "endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RemoteEndpoint"
+              }
+            },
+            "err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "life": {
+              "type": "string"
+            },
+            "relations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "status": {
+              "$ref": "#/definitions/DetailedStatus"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-url",
+            "application-name",
+            "endpoints",
+            "life",
+            "relations",
+            "status"
+          ]
+        },
+        "RemoteEndpoint": {
+          "type": "object",
+          "properties": {
+            "interface": {
+              "type": "string"
+            },
+            "limit": {
+              "type": "integer"
+            },
+            "name": {
+              "type": "string"
+            },
+            "role": {
+              "type": "string"
+            },
+            "scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "role",
+            "interface",
+            "limit",
+            "scope"
+          ]
+        },
         "ResolveCharmResult": {
           "type": "object",
           "properties": {
             "charm": {
               "type": "string"
             },
+            "leader": {
+              "type": "boolean"
+            },
             "machine": {
               "type": "string"
             },
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
             }
           }
         },
-        "CloudDefaults": {
+        "Clouds": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/CloudsResult"
+            }
+          }
+        },
+        "Credential": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/CloudDefaultsResults"
+              "$ref": "#/definitions/CloudCredentialResults"
+            }
+          }
+        },
+        "DefaultCloud": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
             }
           }
         },
-        "Credentials": {
+        "InstanceTypes": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/UserClouds"
+              "$ref": "#/definitions/CloudInstanceTypesConstraints"
             },
             "Result": {
-              "$ref": "#/definitions/CloudCredentialsResults"
+              "$ref": "#/definitions/InstanceTypesResults"
             }
           }
         },
-        "UpdateCredentials": {
+        "RevokeCredentials": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/UsersCloudCredentials"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
-        }
+        },
+        "UpdateCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UpdateCloudCredentials"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UserCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UserClouds"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        }
       },
       "definitions": {
         "Cloud": {
             "endpoint": {
               "type": "string"
             },
+            "identity-endpoint": {
+              "type": "string"
+            },
             "regions": {
               "type": "array",
               "items": {
                 "$ref": "#/definitions/CloudRegion"
               }
             },
+            "storage-endpoint": {
+              "type": "string"
+            },
             "type": {
               "type": "string"
             }
             },
             "auth-type": {
               "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false,
             "auth-type"
           ]
         },
-        "CloudCredentialsResult": {
+        "CloudCredentialResult": {
           "type": "object",
           "properties": {
-            "credentials": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CloudCredential"
-                }
-              }
-            },
             "error": {
               "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudCredential"
             }
           },
           "additionalProperties": false
         },
-        "CloudCredentialsResults": {
+        "CloudCredentialResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudCredentialsResult"
+                "$ref": "#/definitions/CloudCredentialResult"
               }
             }
           },
           "additionalProperties": false
         },
-        "CloudDefaults": {
+        "CloudInstanceTypesConstraint": {
           "type": "object",
           "properties": {
             "cloud-tag": {
               "type": "string"
             },
-            "credential": {
-              "type": "string"
+            "constraints": {
+              "$ref": "#/definitions/Value"
             },
             "region": {
               "type": "string"
           },
           "additionalProperties": false,
           "required": [
-            "cloud-tag"
-          ]
-        },
-        "CloudDefaultsResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/CloudDefaults"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "error"
+            "cloud-tag",
+            "region"
           ]
         },
-        "CloudDefaultsResults": {
+        "CloudInstanceTypesConstraints": {
           "type": "object",
           "properties": {
-            "results": {
+            "constraints": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudDefaultsResult"
+                "$ref": "#/definitions/CloudInstanceTypesConstraint"
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
         },
         "CloudRegion": {
           "type": "object",
             "endpoint": {
               "type": "string"
             },
+            "identity-endpoint": {
+              "type": "string"
+            },
             "name": {
               "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           },
           "additionalProperties": false
         },
+        "CloudsResult": {
+          "type": "object",
+          "properties": {
+            "clouds": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Cloud"
+                }
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "Entities": {
           "type": "object",
           "properties": {
             "results"
           ]
         },
-        "Macaroon": {
+        "InstanceType": {
           "type": "object",
-          "additionalProperties": false
+          "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"
+          ]
         },
-        "UserCloud": {
+        "InstanceTypesResult": {
           "type": "object",
           "properties": {
-            "cloud-tag": {
+            "cost-currency": {
               "type": "string"
             },
-            "user-tag": {
+            "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": [
-            "user-tag",
-            "cloud-tag"
+            "results"
           ]
         },
-        "UserCloudCredentials": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringResult": {
           "type": "object",
           "properties": {
-            "cloud-tag": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
               "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UpdateCloudCredential": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
             },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "credential"
+          ]
+        },
+        "UpdateCloudCredentials": {
+          "type": "object",
+          "properties": {
             "credentials": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CloudCredential"
-                }
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UpdateCloudCredential"
               }
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserCloud": {
+          "type": "object",
+          "properties": {
+            "cloud-tag": {
+              "type": "string"
             },
             "user-tag": {
               "type": "string"
           "additionalProperties": false,
           "required": [
             "user-tag",
-            "cloud-tag",
-            "credentials"
+            "cloud-tag"
           ]
         },
         "UserClouds": {
           },
           "additionalProperties": false
         },
-        "UsersCloudCredentials": {
+        "Value": {
           "type": "object",
           "properties": {
-            "users": {
+            "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": {
-                "$ref": "#/definitions/UserCloudCredentials"
+                "type": "string"
               }
+            },
+            "virt-type": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "users"
-          ]
+          "additionalProperties": false
         }
       }
     }
             }
           }
         },
-        "ControllerConfig": {
+        "CloudSpec": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
             "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
+        "ControllerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ControllerConfigResult"
             }
           }
         },
             }
           }
         },
-        "InitiateModelMigration": {
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
+        "GetControllerAccess": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/InitiateModelMigrationArgs"
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/UserAccessResults"
+            }
+          }
+        },
+        "HostedModelConfigs": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/HostedModelConfigsResults"
+            }
+          }
+        },
+        "InitiateMigration": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/InitiateMigrationArgs"
             },
             "Result": {
-              "$ref": "#/definitions/InitiateModelMigrationResults"
+              "$ref": "#/definitions/InitiateMigrationResults"
             }
           }
         },
             }
           }
         },
+        "ModifyControllerAccess": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyControllerAccessRequest"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
         "RemoveBlocks": {
           "type": "object",
           "properties": {
             "watcher-id"
           ]
         },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "ConfigValue": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "InitiateModelMigrationArgs": {
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostedModelConfig": {
+          "type": "object",
+          "properties": {
+            "cloud-spec": {
+              "$ref": "#/definitions/CloudSpec"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "owner"
+          ]
+        },
+        "HostedModelConfigsResults": {
+          "type": "object",
+          "properties": {
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/HostedModelConfig"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "models"
+          ]
+        },
+        "InitiateMigrationArgs": {
           "type": "object",
           "properties": {
             "specs": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelMigrationSpec"
+                "$ref": "#/definitions/MigrationSpec"
               }
             }
           },
             "specs"
           ]
         },
-        "InitiateModelMigrationResult": {
+        "InitiateMigrationResult": {
           "type": "object",
           "properties": {
             "error": {
               "$ref": "#/definitions/Error"
             },
-            "id": {
+            "migration-id": {
               "type": "string"
             },
             "model-tag": {
           "additionalProperties": false,
           "required": [
             "model-tag",
-            "id"
+            "migration-id"
           ]
         },
-        "InitiateModelMigrationResults": {
+        "InitiateMigrationResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/InitiateModelMigrationResult"
+                "$ref": "#/definitions/InitiateMigrationResult"
               }
             }
           },
           "type": "object",
           "additionalProperties": false
         },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MigrationSpec": {
+          "type": "object",
+          "properties": {
+            "external-control": {
+              "type": "boolean"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "skip-initial-prechecks": {
+              "type": "boolean"
+            },
+            "target-info": {
+              "$ref": "#/definitions/MigrationTargetInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "target-info",
+            "external-control",
+            "skip-initial-prechecks"
+          ]
+        },
+        "MigrationTargetInfo": {
+          "type": "object",
+          "properties": {
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "auth-tag": {
+              "type": "string"
+            },
+            "ca-cert": {
+              "type": "string"
+            },
+            "controller-tag": {
+              "type": "string"
+            },
+            "macaroons": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag"
+          ]
+        },
         "Model": {
           "type": "object",
           "properties": {
             "config"
           ]
         },
-        "ModelMigrationSpec": {
+        "ModelMachineInfo": {
           "type": "object",
           "properties": {
-            "model-tag": {
-              "type": "string"
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
             },
-            "target-info": {
-              "$ref": "#/definitions/ModelMigrationTargetInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "target-info"
-          ]
-        },
-        "ModelMigrationTargetInfo": {
-          "type": "object",
-          "properties": {
-            "addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "has-vote": {
+              "type": "boolean"
             },
-            "auth-tag": {
+            "id": {
               "type": "string"
             },
-            "ca-cert": {
+            "instance-id": {
               "type": "string"
             },
-            "controller-tag": {
+            "status": {
               "type": "string"
             },
-            "password": {
-              "type": "string"
+            "wants-vote": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "controller-tag",
-            "addrs",
-            "ca-cert",
-            "auth-tag",
-            "password"
+            "id"
           ]
         },
         "ModelStatus": {
             "life": {
               "type": "string"
             },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
             "model-tag": {
               "type": "string"
             },
             "models"
           ]
         },
+        "ModelTag": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "ModifyControllerAccess": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "action": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "action",
+            "access"
+          ]
+        },
+        "ModifyControllerAccessRequest": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModifyControllerAccess"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
         "RemoveBlocksArgs": {
           "type": "object",
           "properties": {
             "all"
           ]
         },
+        "UserAccess": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user-tag",
+            "access"
+          ]
+        },
+        "UserAccessResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/UserAccess"
+            }
+          },
+          "additionalProperties": false
+        },
+        "UserAccessResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserAccessResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "UserModel": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "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"
           ]
         },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
         "Error": {
           "type": "object",
           "properties": {
             "NotifyWatcherId"
           ]
         },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
         "StringResult": {
           "type": "object",
           "properties": {
     "Schema": {
       "type": "object",
       "properties": {
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
         "GetAssignedMachine": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "GetCloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResult"
+            }
+          }
+        },
         "GetExposed": {
           "type": "object",
           "properties": {
             "results"
           ]
         },
-        "Entities": {
+        "CloudCredential": {
           "type": "object",
           "properties": {
-            "entities": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "entities"
+            "auth-type"
           ]
         },
-        "Entity": {
+        "CloudSpec": {
           "type": "object",
           "properties": {
-            "tag": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "code": {
+            },
+            "identity-endpoint": {
               "type": "string"
             },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "name": {
+              "type": "string"
             },
-            "message": {
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "message",
-            "code"
+            "type",
+            "name"
           ]
         },
-        "ErrorInfo": {
+        "CloudSpecResult": {
           "type": "object",
           "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "macaroon-path": {
-              "type": "string"
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
             }
           },
           "additionalProperties": false
         },
-        "LifeResult": {
+        "CloudSpecResults": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "life": {
-              "type": "string"
-            }
-          },
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
           "additionalProperties": false,
           "required": [
             "life"
             "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"
           ]
         },
             "ha-members"
           ]
         },
+        "MongoVersion": {
+          "type": "object",
+          "properties": {
+            "engine": {
+              "type": "string"
+            },
+            "major": {
+              "type": "integer"
+            },
+            "minor": {
+              "type": "integer"
+            },
+            "patch": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "major",
+            "minor",
+            "patch",
+            "engine"
+          ]
+        },
         "ResumeReplicationParams": {
           "type": "object",
           "properties": {
           "type": "object",
           "properties": {
             "target": {
-              "$ref": "#/definitions/Version"
+              "$ref": "#/definitions/MongoVersion"
             }
           },
           "additionalProperties": false,
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
             }
           },
           "additionalProperties": false
-        },
-        "Version": {
-          "type": "object",
-          "properties": {
-            "Major": {
-              "type": "integer"
-            },
-            "Minor": {
-              "type": "integer"
-            },
-            "Patch": {
-              "type": "string"
-            },
-            "StorageEngine": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Major",
-            "Minor",
-            "Patch",
-            "StorageEngine"
-          ]
         }
       }
     }
             },
             "record-id": {
               "type": "integer"
+            },
+            "record-timestamp": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
             "record-id",
+            "record-timestamp",
             "err"
           ]
         },
             },
             "record-id": {
               "type": "integer"
+            },
+            "record-timestamp": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
             "LogForwardingID",
-            "record-id"
+            "record-id",
+            "record-timestamp"
           ]
         },
         "LogForwardingSetLastSentParams": {
               "$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": {
     }
   },
   {
-    "Name": "Machiner",
+    "Name": "MachineUndertaker",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "CACert": {
+        "AllMachineRemovals": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
             "Result": {
-              "$ref": "#/definitions/BytesResult"
+              "$ref": "#/definitions/EntitiesResults"
             }
           }
         },
-        "EnsureDead": {
+        "CompleteMachineRemovals": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "Jobs": {
+        "GetMachineProviderInterfaceInfo": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/JobsResults"
+              "$ref": "#/definitions/ProviderInterfaceInfoResults"
             }
           }
         },
-        "Life": {
+        "WatchMachineRemovals": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/LifeResults"
+              "$ref": "#/definitions/NotifyWatchResults"
             }
           }
-        },
-        "ModelUUID": {
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResult": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntitiesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ProviderInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "interface-name": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "interface-name",
+            "mac-address",
+            "provider-id"
+          ]
+        },
+        "ProviderInterfaceInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "interfaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfo"
+              }
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "interfaces"
+          ]
+        },
+        "ProviderInterfaceInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Machiner",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Jobs": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/JobsResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelUUID": {
           "type": "object",
           "properties": {
             "Result": {
             "provider-vlan-id": {
               "type": "string"
             },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
             "vlan-tag": {
               "type": "integer"
             }
             "disabled"
           ]
         },
-        "NotifyWatchResult": {
+        "NetworkRoute": {
           "type": "object",
           "properties": {
-            "NotifyWatcherId": {
+            "destination-cidr": {
               "type": "string"
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "gateway-ip": {
+              "type": "string"
+            },
+            "metric": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId"
+            "destination-cidr",
+            "gateway-ip",
+            "metric"
           ]
         },
-        "NotifyWatchResults": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "results": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
               "type": "array",
               "items": {
                 "$ref": "#/definitions/NotifyWatchResult"
               "type": "string",
               "format": "date-time"
             },
+            "unit": {
+              "type": "string"
+            },
             "value": {
               "type": "string"
             }
           "required": [
             "time",
             "key",
-            "value"
+            "value",
+            "unit"
           ]
         },
         "MetricResults": {
               "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "phase"
-          ]
+          "additionalProperties": false
         },
         "PhaseResults": {
           "type": "object",
             }
           }
         },
-        "GetMigrationStatus": {
+        "MigrationStatus": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MasterMigrationStatus"
+            }
+          }
+        },
+        "MinionReports": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/MinionReports"
+            }
+          }
+        },
+        "ModelInfo": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/FullMigrationStatus"
+              "$ref": "#/definitions/MigrationModelInfo"
             }
           }
         },
+        "Prechecks": {
+          "type": "object"
+        },
+        "Reap": {
+          "type": "object"
+        },
         "SetPhase": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "SetStatusMessage": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMigrationStatusMessageArgs"
+            }
+          }
+        },
         "Watch": {
           "type": "object",
           "properties": {
               "$ref": "#/definitions/NotifyWatchResult"
             }
           }
+        },
+        "WatchMinionReports": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
         }
       },
       "definitions": {
           },
           "additionalProperties": false
         },
-        "FullMigrationStatus": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MasterMigrationStatus": {
           "type": "object",
           "properties": {
-            "attempt": {
-              "type": "integer"
+            "migration-id": {
+              "type": "string"
             },
             "phase": {
               "type": "string"
             },
+            "phase-changed-time": {
+              "type": "string",
+              "format": "date-time"
+            },
             "spec": {
-              "$ref": "#/definitions/ModelMigrationSpec"
+              "$ref": "#/definitions/MigrationSpec"
             }
           },
           "additionalProperties": false,
           "required": [
             "spec",
-            "attempt",
-            "phase"
+            "migration-id",
+            "phase",
+            "phase-changed-time"
           ]
         },
-        "Macaroon": {
+        "MigrationModelInfo": {
           "type": "object",
-          "additionalProperties": false
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "controller-agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "owner-tag",
+            "agent-version",
+            "controller-agent-version"
+          ]
         },
-        "ModelMigrationSpec": {
+        "MigrationSpec": {
           "type": "object",
           "properties": {
+            "external-control": {
+              "type": "boolean"
+            },
             "model-tag": {
               "type": "string"
             },
+            "skip-initial-prechecks": {
+              "type": "boolean"
+            },
             "target-info": {
-              "$ref": "#/definitions/ModelMigrationTargetInfo"
+              "$ref": "#/definitions/MigrationTargetInfo"
             }
           },
           "additionalProperties": false,
           "required": [
             "model-tag",
-            "target-info"
+            "target-info",
+            "external-control",
+            "skip-initial-prechecks"
           ]
         },
-        "ModelMigrationTargetInfo": {
+        "MigrationTargetInfo": {
           "type": "object",
           "properties": {
             "addrs": {
             "controller-tag": {
               "type": "string"
             },
+            "macaroons": {
+              "type": "string"
+            },
             "password": {
               "type": "string"
             }
             "controller-tag",
             "addrs",
             "ca-cert",
-            "auth-tag",
-            "password"
+            "auth-tag"
+          ]
+        },
+        "MinionReports": {
+          "type": "object",
+          "properties": {
+            "failed": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "success-count": {
+              "type": "integer"
+            },
+            "unknown-count": {
+              "type": "integer"
+            },
+            "unknown-sample": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "phase",
+            "success-count",
+            "unknown-count",
+            "unknown-sample",
+            "failed"
           ]
         },
         "NotifyWatchResult": {
             "NotifyWatcherId"
           ]
         },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
         "SerializedModel": {
           "type": "object",
           "properties": {
               "items": {
                 "type": "integer"
               }
+            },
+            "charms": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "bytes"
+            "bytes",
+            "charms",
+            "tools",
+            "resources"
           ]
         },
-        "SetMigrationPhaseArgs": {
+        "SerializedModelResource": {
           "type": "object",
           "properties": {
-            "phase": {
+            "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": [
-            "phase"
+            "application",
+            "name",
+            "application-revision",
+            "charmstore-revision",
+            "unit-revisions"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "MigrationMinion",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "Error": {
+        },
+        "SerializedModelResourceRevision": {
           "type": "object",
           "properties": {
-            "code": {
+            "description": {
               "type": "string"
             },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "fingerprint": {
+              "type": "string"
             },
-            "message": {
+            "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": [
-            "message",
-            "code"
+            "revision",
+            "type",
+            "path",
+            "description",
+            "origin",
+            "fingerprint",
+            "size",
+            "timestamp"
           ]
         },
-        "ErrorInfo": {
+        "SerializedModelTools": {
           "type": "object",
           "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "uri": {
+              "type": "string"
             },
-            "macaroon-path": {
+            "version": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "uri"
+          ]
         },
-        "Macaroon": {
+        "SetMigrationPhaseArgs": {
           "type": "object",
-          "additionalProperties": false
+          "properties": {
+            "phase": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "phase"
+          ]
+        },
+        "SetMigrationStatusMessageArgs": {
+          "type": "object",
+          "properties": {
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationMinion",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Report": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MinionReport"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MinionReport": {
+          "type": "object",
+          "properties": {
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "success": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "phase",
+            "success"
+          ]
         },
         "NotifyWatchResult": {
           "type": "object",
             "attempt": {
               "type": "integer"
             },
+            "external-control": {
+              "type": "boolean"
+            },
+            "migration-id": {
+              "type": "string"
+            },
             "phase": {
               "type": "string"
             },
           },
           "additionalProperties": false,
           "required": [
+            "migration-id",
             "attempt",
             "phase",
+            "external-control",
             "source-api-addrs",
             "source-ca-cert",
             "target-api-addrs",
             }
           }
         },
-        "Import": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SerializedModel"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "ModelArgs": {
-          "type": "object",
-          "properties": {
-            "model-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag"
-          ]
-        },
-        "SerializedModel": {
-          "type": "object",
-          "properties": {
-            "bytes": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "bytes"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "ModelManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "CreateModel": {
+        "AdoptResources": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModelCreateArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/ModelInfo"
+              "$ref": "#/definitions/AdoptResourcesArgs"
             }
           }
         },
-        "DestroyModel": {
-          "type": "object"
-        },
-        "ListModels": {
+        "Import": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entity"
-            },
-            "Result": {
-              "$ref": "#/definitions/UserModelList"
+              "$ref": "#/definitions/SerializedModel"
             }
           }
         },
-        "ModelInfo": {
+        "LatestLogTime": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/ModelArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ModelInfoResults"
+              "type": "string",
+              "format": "date-time"
             }
           }
         },
-        "ModifyModelAccess": {
+        "Prechecks": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModifyModelAccessRequest"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/MigrationModelInfo"
             }
           }
         }
       },
       "definitions": {
-        "Entities": {
+        "AdoptResourcesArgs": {
           "type": "object",
           "properties": {
-            "entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
+            "model-tag": {
+              "type": "string"
+            },
+            "source-controller-version": {
+              "$ref": "#/definitions/Number"
             }
           },
           "additionalProperties": false,
           "required": [
-            "entities"
+            "model-tag",
+            "source-controller-version"
           ]
         },
-        "Entity": {
+        "MigrationModelInfo": {
           "type": "object",
           "properties": {
-            "tag": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "controller-agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag"
+            "uuid",
+            "name",
+            "owner-tag",
+            "agent-version",
+            "controller-agent-version"
           ]
         },
-        "EntityStatus": {
+        "ModelArgs": {
           "type": "object",
           "properties": {
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "info": {
-              "type": "string"
-            },
-            "since": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "status": {
+            "model-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "status",
-            "info",
-            "since"
+            "model-tag"
           ]
         },
-        "Error": {
+        "Number": {
           "type": "object",
           "properties": {
-            "code": {
-              "type": "string"
+            "Build": {
+              "type": "integer"
             },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Major": {
+              "type": "integer"
             },
-            "message": {
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "message",
-            "code"
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
           ]
         },
-        "ErrorInfo": {
+        "SerializedModel": {
           "type": "object",
           "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "bytes": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "macaroon-path": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "results": {
+            "charms": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "type": "string"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelResource"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "bytes",
+            "charms",
+            "tools",
+            "resources"
           ]
         },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "Model": {
+        "SerializedModelResource": {
           "type": "object",
           "properties": {
-            "name": {
+            "application": {
               "type": "string"
             },
-            "owner-tag": {
-              "type": "string"
+            "application-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
             },
-            "uuid": {
+            "charmstore-revision": {
+              "$ref": "#/definitions/SerializedModelResourceRevision"
+            },
+            "name": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "uuid",
-            "owner-tag"
-          ]
-        },
-        "ModelCreateArgs": {
-          "type": "object",
-          "properties": {
-            "config": {
+            },
+            "unit-revisions": {
               "type": "object",
               "patternProperties": {
                 ".*": {
-                  "type": "object",
-                  "additionalProperties": true
+                  "$ref": "#/definitions/SerializedModelResourceRevision"
                 }
               }
-            },
-            "credential": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "region": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
+            "application",
             "name",
-            "owner-tag"
+            "application-revision",
+            "charmstore-revision",
+            "unit-revisions"
           ]
         },
-        "ModelInfo": {
+        "SerializedModelResourceRevision": {
           "type": "object",
           "properties": {
-            "cloud": {
-              "type": "string"
-            },
-            "cloud-credential": {
+            "description": {
               "type": "string"
             },
-            "cloud-region": {
+            "fingerprint": {
               "type": "string"
             },
-            "controller-uuid": {
+            "origin": {
               "type": "string"
             },
-            "default-series": {
+            "path": {
               "type": "string"
             },
-            "life": {
-              "type": "string"
+            "revision": {
+              "type": "integer"
             },
-            "name": {
-              "type": "string"
+            "size": {
+              "type": "integer"
             },
-            "owner-tag": {
-              "type": "string"
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
             },
-            "provider-type": {
+            "type": {
               "type": "string"
             },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            },
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUserInfo"
-              }
-            },
-            "uuid": {
+            "username": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "name",
-            "uuid",
-            "controller-uuid",
-            "provider-type",
-            "default-series",
-            "cloud",
-            "owner-tag",
-            "life",
-            "status",
-            "users"
+            "revision",
+            "type",
+            "path",
+            "description",
+            "origin",
+            "fingerprint",
+            "size",
+            "timestamp"
           ]
         },
-        "ModelInfoResult": {
+        "SerializedModelTools": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "uri": {
+              "type": "string"
             },
-            "result": {
-              "$ref": "#/definitions/ModelInfo"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ModelInfoResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelInfoResult"
-              }
+            "version": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "version",
+            "uri"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelConfig",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ModelGet": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
+            }
+          }
         },
-        "ModelUserInfo": {
+        "ModelSet": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "display-name": {
-              "type": "string"
-            },
-            "last-connection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "user": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/ModelSet"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "user",
-            "display-name",
-            "last-connection",
-            "access"
-          ]
+          }
         },
-        "ModifyModelAccess": {
+        "ModelUnset": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "action": {
-              "type": "string"
-            },
-            "model-tag": {
+            "Params": {
+              "$ref": "#/definitions/ModelUnset"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
               "type": "string"
             },
-            "user-tag": {
-              "type": "string"
+            "value": {
+              "type": "object",
+              "additionalProperties": true
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-tag",
-            "action",
-            "access",
-            "model-tag"
+            "value",
+            "source"
           ]
         },
-        "ModifyModelAccessRequest": {
+        "ModelConfigResults": {
           "type": "object",
           "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModifyModelAccess"
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ConfigValue"
+                }
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "changes"
+            "config"
           ]
         },
-        "UserModel": {
+        "ModelSet": {
           "type": "object",
           "properties": {
-            "last-connection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "model": {
-              "$ref": "#/definitions/Model"
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "model",
-            "last-connection"
+            "config"
           ]
         },
-        "UserModelList": {
+        "ModelUnset": {
           "type": "object",
           "properties": {
-            "user-models": {
+            "keys": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/UserModel"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-models"
+            "keys"
           ]
         }
       }
     }
   },
   {
-    "Name": "NotifyWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "Pinger",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Ping": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "Provisioner",
-    "Version": 3,
+    "Name": "ModelManager",
+    "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "CACert": {
+        "CreateModel": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelCreateArgs"
+            },
             "Result": {
-              "$ref": "#/definitions/BytesResult"
+              "$ref": "#/definitions/ModelInfo"
             }
           }
         },
-        "Constraints": {
+        "DestroyModels": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ConstraintsResults"
-            }
-          }
-        },
-        "ContainerConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ContainerConfig"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "ContainerManagerConfig": {
+        "DumpModels": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ContainerManagerConfigParams"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ContainerManagerConfig"
-            }
-          }
-        },
-        "ControllerConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ControllerConfigResult"
+              "$ref": "#/definitions/MapResults"
             }
           }
         },
-        "DistributionGroup": {
+        "DumpModelsDB": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/DistributionGroupResults"
+              "$ref": "#/definitions/MapResults"
             }
           }
         },
-        "EnsureDead": {
+        "ListModels": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/Entity"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/UserModelList"
             }
           }
         },
-        "FindTools": {
+        "ModelDefaults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/FindToolsParams"
-            },
             "Result": {
-              "$ref": "#/definitions/FindToolsResult"
+              "$ref": "#/definitions/ModelDefaultsResult"
             }
           }
         },
-        "GetContainerInterfaceInfo": {
+        "ModelInfo": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+              "$ref": "#/definitions/ModelInfoResults"
             }
           }
         },
-        "InstanceId": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/StringResults"
+              "$ref": "#/definitions/ModelStatusResults"
             }
           }
         },
-        "InstanceStatus": {
+        "ModifyModelAccess": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/ModifyModelAccessRequest"
             },
             "Result": {
-              "$ref": "#/definitions/StatusResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "Life": {
+        "SetModelDefaults": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/SetModelDefaults"
             },
             "Result": {
-              "$ref": "#/definitions/LifeResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "MachinesWithTransientErrors": {
+        "UnsetModelDefaults": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/UnsetModelDefaults"
+            },
             "Result": {
-              "$ref": "#/definitions/StatusResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
-        },
-        "ModelConfig": {
+        }
+      },
+      "definitions": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
         },
-        "ModelUUID": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
+            "tag": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
         },
-        "PrepareContainerInterfaceInfo": {
+        "EntityStatus": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+            "info": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "status",
+            "info",
+            "since"
+          ]
         },
-        "ProvisioningInfo": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "code": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/ProvisioningInfoResults"
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
         },
-        "ReleaseContainerAddresses": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "macaroon-path": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "Remove": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "error": {
+              "$ref": "#/definitions/Error"
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "Series": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
         },
-        "SetInstanceInfo": {
+        "Macaroon": {
           "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/InstancesInfo"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
+          "additionalProperties": false
         },
-        "SetInstanceStatus": {
+        "MachineHardware": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "arch": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetPasswords": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntityPasswords"
+            "availability-zone": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "cores": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetSupportedContainers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachineContainersParams"
+            "cpu-power": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "StateAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "Status": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "mem": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
-            }
-          }
-        },
-        "Tools": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "root-disk": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ToolsResults"
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "UpdateStatus": {
+        "MapResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "result": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
         },
-        "WatchAPIHostPorts": {
+        "MapResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MapResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
         },
-        "WatchAllContainers": {
+        "Model": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/WatchContainers"
+            "name": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchContainers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/WatchContainers"
+            "owner-tag": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchMachineErrorRetry": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchModelMachines": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "APIHostPortsResult": {
-          "type": "object",
-          "properties": {
-            "servers": {
-              "type": "array",
-              "items": {
-                "type": "array",
-                "items": {
-                  "$ref": "#/definitions/HostPort"
-                }
-              }
+            "uuid": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "servers"
+            "name",
+            "uuid",
+            "owner-tag"
           ]
         },
-        "Address": {
+        "ModelCreateArgs": {
           "type": "object",
           "properties": {
-            "scope": {
+            "cloud-tag": {
               "type": "string"
             },
-            "space-name": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "credential": {
               "type": "string"
             },
-            "type": {
+            "name": {
               "type": "string"
             },
-            "value": {
+            "owner-tag": {
+              "type": "string"
+            },
+            "region": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "value",
-            "type",
-            "scope"
+            "name",
+            "owner-tag"
           ]
         },
-        "Binary": {
+        "ModelDefaultValues": {
           "type": "object",
           "properties": {
-            "Arch": {
+            "cloud-region": {
               "type": "string"
             },
-            "Number": {
-              "$ref": "#/definitions/Number"
-            },
-            "Series": {
+            "cloud-tag": {
               "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Number",
-            "Series",
-            "Arch"
+            "config"
           ]
         },
-        "BytesResult": {
+        "ModelDefaults": {
           "type": "object",
           "properties": {
-            "result": {
+            "controller": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "default": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "regions": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/RegionDefaults"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelDefaultsResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ModelDefaults"
+                }
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "result"
+            "config"
           ]
         },
-        "CloudImageMetadata": {
+        "ModelInfo": {
           "type": "object",
           "properties": {
-            "arch": {
+            "cloud-credential-tag": {
               "type": "string"
             },
-            "image-id": {
+            "cloud-region": {
               "type": "string"
             },
-            "priority": {
-              "type": "integer"
-            },
-            "region": {
+            "cloud-tag": {
               "type": "string"
             },
-            "root-storage-size": {
-              "type": "integer"
+            "controller-uuid": {
+              "type": "string"
             },
-            "root-storage-type": {
+            "default-series": {
               "type": "string"
             },
-            "series": {
+            "life": {
               "type": "string"
             },
-            "source": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "migration": {
+              "$ref": "#/definitions/ModelMigrationStatus"
+            },
+            "name": {
               "type": "string"
             },
-            "stream": {
+            "owner-tag": {
               "type": "string"
             },
-            "version": {
+            "provider-type": {
               "type": "string"
             },
-            "virt-type": {
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfo"
+              }
+            },
+            "uuid": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "image-id",
-            "region",
-            "version",
-            "series",
-            "arch",
-            "source",
-            "priority"
+            "name",
+            "uuid",
+            "controller-uuid",
+            "provider-type",
+            "default-series",
+            "cloud-tag",
+            "owner-tag",
+            "life",
+            "status",
+            "users",
+            "machines"
           ]
         },
-        "ConstraintsResult": {
+        "ModelInfoResult": {
           "type": "object",
           "properties": {
-            "constraints": {
-              "$ref": "#/definitions/Value"
-            },
             "error": {
               "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ModelInfo"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "constraints"
-          ]
+          "additionalProperties": false
         },
-        "ConstraintsResults": {
+        "ModelInfoResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ConstraintsResult"
+                "$ref": "#/definitions/ModelInfoResult"
               }
             }
           },
             "results"
           ]
         },
-        "ContainerConfig": {
+        "ModelMachineInfo": {
           "type": "object",
           "properties": {
-            "UpdateBehavior": {
-              "$ref": "#/definitions/UpdateBehavior"
-            },
-            "apt-mirror": {
-              "type": "string"
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
             },
-            "apt-proxy": {
-              "$ref": "#/definitions/Settings"
+            "has-vote": {
+              "type": "boolean"
             },
-            "authorized-keys": {
+            "id": {
               "type": "string"
             },
-            "provider-type": {
+            "instance-id": {
               "type": "string"
             },
-            "proxy": {
-              "$ref": "#/definitions/Settings"
+            "status": {
+              "type": "string"
             },
-            "ssl-hostname-verification": {
+            "wants-vote": {
               "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "provider-type",
-            "authorized-keys",
-            "ssl-hostname-verification",
-            "proxy",
-            "apt-proxy",
-            "apt-mirror",
-            "UpdateBehavior"
+            "id"
           ]
         },
-        "ContainerManagerConfig": {
+        "ModelMigrationStatus": {
           "type": "object",
           "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
+            "end": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "start": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "config"
+            "status",
+            "start"
           ]
         },
-        "ContainerManagerConfigParams": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
-            "type": {
+            "application-count": {
+              "type": "integer"
+            },
+            "hosted-machine-count": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "owner-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "type"
+            "model-tag",
+            "life",
+            "hosted-machine-count",
+            "application-count",
+            "owner-tag"
           ]
         },
-        "ControllerConfigResult": {
+        "ModelStatusResults": {
           "type": "object",
           "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelStatus"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "config"
+            "models"
           ]
         },
-        "DistributionGroupResult": {
+        "ModelUnsetKeys": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "cloud-region": {
+              "type": "string"
             },
-            "result": {
+            "cloud-tag": {
+              "type": "string"
+            },
+            "keys": {
               "type": "array",
               "items": {
                 "type": "string"
           },
           "additionalProperties": false,
           "required": [
-            "result"
+            "keys"
           ]
         },
-        "DistributionGroupResults": {
+        "ModelUserInfo": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/DistributionGroupResult"
-              }
+            "access": {
+              "type": "string"
+            },
+            "display-name": {
+              "type": "string"
+            },
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "user": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "user",
+            "display-name",
+            "last-connection",
+            "access"
           ]
         },
-        "Entities": {
+        "ModifyModelAccess": {
           "type": "object",
           "properties": {
-            "entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
+            "access": {
+              "type": "string"
+            },
+            "action": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "entities"
+            "user-tag",
+            "action",
+            "access",
+            "model-tag"
           ]
         },
-        "Entity": {
+        "ModifyModelAccessRequest": {
           "type": "object",
           "properties": {
-            "tag": {
-              "type": "string"
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModifyModelAccess"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag"
+            "changes"
           ]
         },
-        "EntityPassword": {
+        "RegionDefaults": {
           "type": "object",
           "properties": {
-            "password": {
+            "region-name": {
               "type": "string"
             },
-            "tag": {
-              "type": "string"
+            "value": {
+              "type": "object",
+              "additionalProperties": true
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag",
-            "password"
+            "region-name",
+            "value"
           ]
         },
-        "EntityPasswords": {
+        "SetModelDefaults": {
           "type": "object",
           "properties": {
-            "changes": {
+            "config": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityPassword"
+                "$ref": "#/definitions/ModelDefaultValues"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "changes"
+            "config"
           ]
         },
-        "EntityStatusArgs": {
+        "UnsetModelDefaults": {
           "type": "object",
           "properties": {
-            "data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "info": {
-              "type": "string"
-            },
-            "status": {
-              "type": "string"
-            },
-            "tag": {
-              "type": "string"
+            "keys": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUnsetKeys"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag",
-            "status",
-            "info",
-            "data"
+            "keys"
           ]
         },
-        "Error": {
+        "UserModel": {
           "type": "object",
           "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "last-connection": {
+              "type": "string",
+              "format": "date-time"
             },
-            "message": {
-              "type": "string"
+            "model": {
+              "$ref": "#/definitions/Model"
             }
           },
           "additionalProperties": false,
           "required": [
-            "message",
-            "code"
+            "model",
+            "last-connection"
           ]
         },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "macaroon-path": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResults": {
+        "UserModelList": {
           "type": "object",
           "properties": {
-            "results": {
+            "user-models": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/UserModel"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "user-models"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "NotifyWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object"
         },
-        "FindToolsParams": {
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Payloads",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "major": {
-              "type": "integer"
-            },
-            "minor": {
-              "type": "integer"
-            },
-            "number": {
-              "$ref": "#/definitions/Number"
+            "Params": {
+              "$ref": "#/definitions/EnvListArgs"
             },
-            "series": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/EnvListResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "number",
-            "major",
-            "minor",
-            "arch",
-            "series"
-          ]
-        },
-        "FindToolsResult": {
+          }
+        }
+      },
+      "definitions": {
+        "EnvListArgs": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "list": {
+            "patterns": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Tools"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "list"
+            "patterns"
           ]
         },
-        "HardwareCharacteristics": {
+        "EnvListResults": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "availability-zone": {
-              "type": "string"
-            },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "mem": {
-              "type": "integer"
-            },
-            "root-disk": {
-              "type": "integer"
-            },
-            "tags": {
+            "results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Payload"
               }
             }
           },
-          "additionalProperties": false
-        },
-        "HostPort": {
-          "type": "object",
-          "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
-            },
-            "port": {
-              "type": "integer"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "Address",
-            "port"
+            "results"
           ]
         },
-        "InstanceInfo": {
+        "Payload": {
           "type": "object",
           "properties": {
-            "characteristics": {
-              "$ref": "#/definitions/HardwareCharacteristics"
+            "class": {
+              "type": "string"
             },
-            "instance-id": {
+            "id": {
               "type": "string"
             },
-            "network-config": {
+            "labels": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NetworkConfig"
+                "type": "string"
               }
             },
-            "nonce": {
+            "machine": {
               "type": "string"
             },
-            "tag": {
+            "status": {
               "type": "string"
             },
-            "volume-attachments": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/VolumeAttachmentInfo"
-                }
-              }
+            "type": {
+              "type": "string"
             },
-            "volumes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Volume"
-              }
+            "unit": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag",
-            "instance-id",
-            "nonce",
-            "characteristics",
-            "volumes",
-            "volume-attachments",
-            "network-config"
+            "class",
+            "type",
+            "id",
+            "status",
+            "labels",
+            "unit",
+            "machine"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "PayloadsHookContext",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
         },
-        "InstancesInfo": {
+        "LookUp": {
           "type": "object",
           "properties": {
-            "machines": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/InstanceInfo"
-              }
+            "Params": {
+              "$ref": "#/definitions/LookUpArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "machines"
-          ]
+          }
         },
-        "LifeResult": {
+        "SetStatus": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/SetStatusArgs"
             },
-            "life": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "life"
-          ]
+          }
         },
-        "LifeResults": {
+        "Track": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LifeResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/TrackArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
+          }
         },
-        "Macaroon": {
+        "Untrack": {
           "type": "object",
-          "additionalProperties": false
-        },
-        "MachineContainers": {
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/PayloadResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "container-types": {
+            "entities": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Entity"
               }
-            },
-            "machine-tag": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "machine-tag",
-            "container-types"
+            "entities"
           ]
         },
-        "MachineContainersParams": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MachineContainers"
-              }
+            "tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "params"
+            "tag"
           ]
         },
-        "MachineNetworkConfigResult": {
+        "Error": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "code": {
+              "type": "string"
             },
             "info": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/NetworkConfig"
-              }
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "info"
+            "message",
+            "code"
           ]
         },
-        "MachineNetworkConfigResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MachineNetworkConfigResult"
-              }
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "LookUpArg": {
+          "type": "object",
+          "properties": {
+            "id": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "name",
+            "id"
           ]
         },
-        "ModelConfigResult": {
+        "LookUpArgs": {
           "type": "object",
           "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
+            "args": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LookUpArg"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "config"
+            "args"
           ]
         },
-        "NetworkConfig": {
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "Payload": {
           "type": "object",
           "properties": {
-            "address": {
-              "type": "string"
-            },
-            "cidr": {
+            "class": {
               "type": "string"
             },
-            "config-type": {
+            "id": {
               "type": "string"
             },
-            "device-index": {
-              "type": "integer"
-            },
-            "disabled": {
-              "type": "boolean"
-            },
-            "dns-search-domains": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "dns-servers": {
+            "labels": {
               "type": "array",
               "items": {
                 "type": "string"
               }
             },
-            "gateway-address": {
+            "machine": {
               "type": "string"
             },
-            "interface-name": {
+            "status": {
               "type": "string"
             },
-            "interface-type": {
+            "type": {
               "type": "string"
             },
-            "mac-address": {
+            "unit": {
               "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "class",
+            "type",
+            "id",
+            "status",
+            "labels",
+            "unit",
+            "machine"
+          ]
+        },
+        "PayloadResult": {
+          "type": "object",
+          "properties": {
+            "Entity": {
+              "$ref": "#/definitions/Entity"
             },
-            "mtu": {
-              "type": "integer"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "no-auto-start": {
+            "not-found": {
               "type": "boolean"
             },
-            "parent-interface-name": {
-              "type": "string"
-            },
-            "provider-address-id": {
-              "type": "string"
-            },
-            "provider-id": {
-              "type": "string"
-            },
-            "provider-space-id": {
-              "type": "string"
-            },
-            "provider-subnet-id": {
-              "type": "string"
-            },
-            "provider-vlan-id": {
-              "type": "string"
-            },
-            "vlan-tag": {
-              "type": "integer"
+            "payload": {
+              "$ref": "#/definitions/Payload"
             }
           },
           "additionalProperties": false,
           "required": [
-            "device-index",
-            "mac-address",
-            "cidr",
-            "mtu",
-            "provider-id",
-            "provider-subnet-id",
-            "provider-space-id",
-            "provider-address-id",
-            "provider-vlan-id",
-            "vlan-tag",
-            "interface-name",
-            "parent-interface-name",
-            "interface-type",
-            "disabled"
+            "Entity",
+            "payload",
+            "not-found"
           ]
         },
-        "NotifyWatchResult": {
+        "PayloadResults": {
           "type": "object",
           "properties": {
-            "NotifyWatcherId": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/PayloadResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId"
+            "results"
           ]
         },
-        "Number": {
+        "SetStatusArg": {
           "type": "object",
           "properties": {
-            "Build": {
-              "type": "integer"
-            },
-            "Major": {
-              "type": "integer"
-            },
-            "Minor": {
-              "type": "integer"
-            },
-            "Patch": {
-              "type": "integer"
+            "Entity": {
+              "$ref": "#/definitions/Entity"
             },
-            "Tag": {
+            "status": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Major",
-            "Minor",
-            "Tag",
-            "Patch",
-            "Build"
+            "Entity",
+            "status"
           ]
         },
-        "ProvisioningInfo": {
+        "SetStatusArgs": {
           "type": "object",
           "properties": {
-            "constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "controller-config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "endpoint-bindings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "image-metadata": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudImageMetadata"
-              }
-            },
-            "jobs": {
+            "args": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/SetStatusArg"
               }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "args"
+          ]
+        },
+        "TrackArgs": {
+          "type": "object",
+          "properties": {
+            "payloads": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Payload"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "payloads"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Pinger",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Ping": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Provisioner",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ConstraintsResults"
+            }
+          }
+        },
+        "ContainerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ContainerConfig"
+            }
+          }
+        },
+        "ContainerManagerConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ContainerManagerConfigParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ContainerManagerConfig"
+            }
+          }
+        },
+        "ControllerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ControllerConfigResult"
+            }
+          }
+        },
+        "DistributionGroup": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DistributionGroupResults"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FindTools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindToolsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/FindToolsResult"
+            }
+          }
+        },
+        "GetContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "HostChangesForContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/HostNetworkChangeResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "InstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "MachinesWithTransientErrors": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "MarkMachinesForRemoval": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "PrepareContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "ProvisioningInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProvisioningInfoResults"
+            }
+          }
+        },
+        "ReleaseContainerAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Series": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "SetHostMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
+        "SetInstanceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/InstancesInfo"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetInstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetObservedNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
+            }
+          }
+        },
+        "SetPasswords": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetSupportedContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachineContainersParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StateAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "Status": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ToolsResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchAllContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/WatchContainers"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchContainers": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/WatchContainers"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchMachineErrorRetry": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "servers"
+          ]
+        },
+        "Address": {
+          "type": "object",
+          "properties": {
+            "scope": {
+              "type": "string"
+            },
+            "space-name": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            },
+            "value": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "type",
+            "scope"
+          ]
+        },
+        "Binary": {
+          "type": "object",
+          "properties": {
+            "Arch": {
+              "type": "string"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Number",
+            "Series",
+            "Arch"
+          ]
+        },
+        "BytesResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "CloudImageMetadata": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "image-id": {
+              "type": "string"
+            },
+            "priority": {
+              "type": "integer"
+            },
+            "region": {
+              "type": "string"
+            },
+            "root-storage-size": {
+              "type": "integer"
+            },
+            "root-storage-type": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "source": {
+              "type": "string"
+            },
+            "stream": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            },
+            "virt-type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "image-id",
+            "region",
+            "version",
+            "series",
+            "arch",
+            "source",
+            "priority"
+          ]
+        },
+        "ConstraintsResult": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints"
+          ]
+        },
+        "ConstraintsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ConstraintsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ContainerConfig": {
+          "type": "object",
+          "properties": {
+            "UpdateBehavior": {
+              "$ref": "#/definitions/UpdateBehavior"
+            },
+            "apt-mirror": {
+              "type": "string"
+            },
+            "apt-proxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "authorized-keys": {
+              "type": "string"
+            },
+            "provider-type": {
+              "type": "string"
+            },
+            "proxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "ssl-hostname-verification": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "provider-type",
+            "authorized-keys",
+            "ssl-hostname-verification",
+            "proxy",
+            "apt-proxy",
+            "apt-mirror",
+            "UpdateBehavior"
+          ]
+        },
+        "ContainerManagerConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ContainerManagerConfigParams": {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type"
+          ]
+        },
+        "ControllerConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "DeviceBridgeInfo": {
+          "type": "object",
+          "properties": {
+            "bridge-name": {
+              "type": "string"
+            },
+            "host-device-name": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "host-device-name",
+            "bridge-name"
+          ]
+        },
+        "DistributionGroupResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "DistributionGroupResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DistributionGroupResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "EntityPassword": {
+          "type": "object",
+          "properties": {
+            "password": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "password"
+          ]
+        },
+        "EntityPasswords": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "info": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "status",
+            "info",
+            "data"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "FindToolsParams": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "major": {
+              "type": "integer"
+            },
+            "minor": {
+              "type": "integer"
+            },
+            "number": {
+              "$ref": "#/definitions/Number"
+            },
+            "series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "number",
+            "major",
+            "minor",
+            "arch",
+            "series"
+          ]
+        },
+        "FindToolsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "list": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "list"
+          ]
+        },
+        "HardwareCharacteristics": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "HostNetworkChange": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "new-bridges": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DeviceBridgeInfo"
+              }
+            },
+            "reconfigure-delay": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "new-bridges",
+            "reconfigure-delay"
+          ]
+        },
+        "HostNetworkChangeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/HostNetworkChange"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "HostPort": {
+          "type": "object",
+          "properties": {
+            "Address": {
+              "$ref": "#/definitions/Address"
+            },
+            "port": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "port"
+          ]
+        },
+        "InstanceInfo": {
+          "type": "object",
+          "properties": {
+            "characteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "network-config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "nonce": {
+              "type": "string"
+            },
+            "tag": {
+              "type": "string"
+            },
+            "volume-attachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/VolumeAttachmentInfo"
+                }
+              }
+            },
+            "volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Volume"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "instance-id",
+            "nonce",
+            "characteristics",
+            "volumes",
+            "volume-attachments",
+            "network-config"
+          ]
+        },
+        "InstancesInfo": {
+          "type": "object",
+          "properties": {
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceInfo"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machines"
+          ]
+        },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "life"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineContainers": {
+          "type": "object",
+          "properties": {
+            "container-types": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "container-types"
+          ]
+        },
+        "MachineContainersParams": {
+          "type": "object",
+          "properties": {
+            "params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineContainers"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "params"
+          ]
+        },
+        "MachineNetworkConfigResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "info": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "info"
+          ]
+        },
+        "MachineNetworkConfigResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineNetworkConfigResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelConfigResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "NetworkConfig": {
+          "type": "object",
+          "properties": {
+            "address": {
+              "type": "string"
+            },
+            "cidr": {
+              "type": "string"
+            },
+            "config-type": {
+              "type": "string"
+            },
+            "device-index": {
+              "type": "integer"
+            },
+            "disabled": {
+              "type": "boolean"
+            },
+            "dns-search-domains": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "dns-servers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "gateway-address": {
+              "type": "string"
+            },
+            "interface-name": {
+              "type": "string"
+            },
+            "interface-type": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "mtu": {
+              "type": "integer"
+            },
+            "no-auto-start": {
+              "type": "boolean"
+            },
+            "parent-interface-name": {
+              "type": "string"
+            },
+            "provider-address-id": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            },
+            "provider-space-id": {
+              "type": "string"
+            },
+            "provider-subnet-id": {
+              "type": "string"
+            },
+            "provider-vlan-id": {
+              "type": "string"
+            },
+            "routes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkRoute"
+              }
+            },
+            "vlan-tag": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "device-index",
+            "mac-address",
+            "cidr",
+            "mtu",
+            "provider-id",
+            "provider-subnet-id",
+            "provider-space-id",
+            "provider-address-id",
+            "provider-vlan-id",
+            "vlan-tag",
+            "interface-name",
+            "parent-interface-name",
+            "interface-type",
+            "disabled"
+          ]
+        },
+        "NetworkRoute": {
+          "type": "object",
+          "properties": {
+            "destination-cidr": {
+              "type": "string"
+            },
+            "gateway-ip": {
+              "type": "string"
+            },
+            "metric": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "destination-cidr",
+            "gateway-ip",
+            "metric"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "ProvisioningInfo": {
+          "type": "object",
+          "properties": {
+            "constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "controller-config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "endpoint-bindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "image-metadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
+            },
+            "jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "placement": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "subnets-to-zones": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "constraints",
+            "series",
+            "placement",
+            "jobs"
+          ]
+        },
+        "ProvisioningInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ProvisioningInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "ProvisioningInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProvisioningInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "SetMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag",
+            "config"
+          ]
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityStatusArgs"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Settings": {
+          "type": "object",
+          "properties": {
+            "Ftp": {
+              "type": "string"
+            },
+            "Http": {
+              "type": "string"
+            },
+            "Https": {
+              "type": "string"
+            },
+            "NoProxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Http",
+            "Https",
+            "Ftp",
+            "NoProxy"
+          ]
+        },
+        "StatusResult": {
+          "type": "object",
+          "properties": {
+            "data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "id": {
+              "type": "string"
+            },
+            "info": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "status": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id",
+            "life",
+            "status",
+            "info",
+            "data",
+            "since"
+          ]
+        },
+        "StatusResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "StringResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "placement": {
-              "type": "string"
-            },
-            "series": {
+            "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"
             },
-            "subnets-to-zones": {
+            "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": "array",
-                  "items": {
-                    "type": "string"
-                  }
+                  "type": "object",
+                  "additionalProperties": true
                 }
               }
             },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
             "tags": {
               "type": "object",
               "patternProperties": {
                 }
               }
             },
-            "volumes": {
+            "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/VolumeParams"
+                "$ref": "#/definitions/WatchContainer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "constraints",
-            "series",
-            "placement",
-            "jobs"
+            "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"
           ]
         },
-        "ProvisioningInfoResult": {
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "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": {
+            "application-tag": {
               "type": "string"
             },
-            "provider": {
+            "life": {
               "type": "string"
             },
-            "read-only": {
-              "type": "boolean"
+            "relations": {
+              "$ref": "#/definitions/RemoteRelationsChange"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "application-tag",
+            "life",
+            "relations"
+          ]
+        },
+        "RemoteApplicationWatchResult": {
+          "type": "object",
+          "properties": {
+            "change": {
+              "$ref": "#/definitions/RemoteApplicationChange"
             },
-            "volume-id": {
-              "type": "string"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "volume-tag": {
+            "id": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-tag",
-            "machine-tag",
-            "provider"
+            "id"
           ]
         },
-        "VolumeInfo": {
+        "RemoteEntityId": {
           "type": "object",
           "properties": {
-            "hardware-id": {
+            "model-uuid": {
               "type": "string"
             },
-            "persistent": {
-              "type": "boolean"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "volume-id": {
+            "token": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-id",
-            "size",
-            "persistent"
+            "model-uuid",
+            "token"
           ]
         },
-        "VolumeParams": {
+        "RemoteRelationChange": {
           "type": "object",
           "properties": {
-            "attachment": {
-              "$ref": "#/definitions/VolumeAttachmentParams"
-            },
-            "attributes": {
+            "changed-units": {
               "type": "object",
               "patternProperties": {
                 ".*": {
-                  "type": "object",
-                  "additionalProperties": true
+                  "$ref": "#/definitions/RemoteRelationUnitChange"
                 }
               }
             },
-            "provider": {
-              "type": "string"
+            "departed-units": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "size": {
+            "id": {
               "type": "integer"
             },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "volume-tag": {
+            "life": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volume-tag",
-            "size",
-            "provider"
+            "id",
+            "life"
           ]
         },
-        "WatchContainer": {
+        "RemoteRelationUnitChange": {
           "type": "object",
           "properties": {
-            "container-type": {
-              "type": "string"
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "machine-tag": {
-              "type": "string"
+            "unit-id": {
+              "$ref": "#/definitions/RemoteEntityId"
             }
           },
           "additionalProperties": false,
           "required": [
-            "machine-tag",
-            "container-type"
+            "unit-id"
           ]
         },
-        "WatchContainers": {
+        "RemoteRelationsChange": {
           "type": "object",
           "properties": {
-            "params": {
+            "changed": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/WatchContainer"
+                "$ref": "#/definitions/RemoteRelationChange"
+              }
+            },
+            "initial": {
+              "type": "boolean"
+            },
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "params"
+            "initial"
           ]
         }
       }
     }
   },
   {
-    "Name": "ProxyUpdater",
+    "Name": "RemoteRelationsWatcher",
     "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": {
+        "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": {
-            "results": {
+            "entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "entities"
           ]
         },
         "Macaroon": {
           "type": "object",
           "additionalProperties": false
         },
-        "NotifyWatchResult": {
+        "Resource": {
           "type": "object",
           "properties": {
-            "NotifyWatcherId": {
+            "CharmResource": {
+              "$ref": "#/definitions/CharmResource"
+            },
+            "application": {
               "type": "string"
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "id": {
+              "type": "string"
+            },
+            "pending-id": {
+              "type": "string"
+            },
+            "timestamp": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "username": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId"
+            "CharmResource",
+            "id",
+            "pending-id",
+            "application",
+            "username",
+            "timestamp"
           ]
         },
-        "RebootActionResult": {
+        "ResourcesResult": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "ErrorResult": {
+              "$ref": "#/definitions/ErrorResult"
             },
-            "result": {
-              "type": "string"
+            "charm-store-resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CharmResource"
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Resource"
+              }
+            },
+            "unit-resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UnitResources"
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "ErrorResult",
+            "resources",
+            "charm-store-resources",
+            "unit-resources"
+          ]
         },
-        "RebootActionResults": {
+        "ResourcesResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/RebootActionResult"
+                "$ref": "#/definitions/ResourcesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "UnitResources": {
+          "type": "object",
+          "properties": {
+            "Entity": {
+              "$ref": "#/definitions/Entity"
+            },
+            "download-progress": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "integer"
+                }
+              }
+            },
+            "resources": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Resource"
               }
             }
           },
-          "additionalProperties": false
+          "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": {
   },
   {
     "Name": "Storage",
-    "Version": 2,
+    "Version": 3,
     "Schema": {
       "type": "object",
       "properties": {
   },
   {
     "Name": "StorageProvisioner",
-    "Version": 2,
+    "Version": 3,
     "Schema": {
       "type": "object",
       "properties": {
             }
           }
         },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
         "Remove": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
         "WatchMachines": {
           "type": "object",
           "properties": {
             "results"
           ]
         },
-        "ModelConfigResult": {
-          "type": "object",
-          "properties": {
-            "config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "config"
-          ]
-        },
         "NotifyWatchResult": {
           "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": {
+        "DisableUser": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/MacaroonResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "DisableUser": {
+        "EnableUser": {
           "type": "object",
           "properties": {
             "Params": {
             }
           }
         },
-        "EnableUser": {
+        "RemoveUser": {
           "type": "object",
           "properties": {
             "Params": {
             "display-name": {
               "type": "string"
             },
-            "model-access-permission": {
-              "type": "string"
-            },
             "password": {
               "type": "string"
             },
-            "shared-model-tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
             "username": {
               "type": "string"
             }
           "additionalProperties": false,
           "required": [
             "username",
-            "display-name",
-            "shared-model-tags"
+            "display-name"
           ]
         },
         "AddUserResult": {
           "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": {
+            "access": {
+              "type": "string"
+            },
             "created-by": {
               "type": "string"
             },
           "required": [
             "username",
             "display-name",
+            "access",
             "created-by",
             "date-created",
             "disabled"