Regen client against juju-2.0.2
[osm/N2VC.git] / juju / client / schemas.json
index cdbe0e2..1191024 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": "ApplicationScaler",
+    "Name": "ApplicationRelationsWatcher",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Rescale": {
+        "Next": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/ApplicationRelationsWatchResult"
             }
           }
         },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
+        "Stop": {
+          "type": "object"
         }
       },
       "definitions": {
-        "Entities": {
+        "ApplicationRelationsChange": {
           "type": "object",
           "properties": {
-            "entities": {
+            "changed": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/RelationChange"
+              }
+            },
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "entities"
-          ]
+          "additionalProperties": false
         },
-        "Entity": {
+        "ApplicationRelationsWatchResult": {
           "type": "object",
           "properties": {
-            "tag": {
+            "ApplicationRelationsWatcherId": {
               "type": "string"
+            },
+            "changes": {
+              "$ref": "#/definitions/ApplicationRelationsChange"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag"
+            "ApplicationRelationsWatcherId"
           ]
         },
         "Error": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
+        "Macaroon": {
           "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
           "additionalProperties": false
         },
-        "ErrorResults": {
+        "RelationChange": {
           "type": "object",
           "properties": {
-            "results": {
+            "changedunits": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RelationUnitChange"
+                }
+              }
+            },
+            "departedunits": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "type": "string"
               }
+            },
+            "id": {
+              "type": "integer"
+            },
+            "life": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "id",
+            "life"
           ]
         },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "StringsWatchResult": {
+        "RelationUnitChange": {
           "type": "object",
           "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
+            "settings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
               }
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "watcher-id": {
-              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "watcher-id"
-          ]
+          "additionalProperties": false
         }
       }
     }
   },
   {
-    "Name": "Backups",
+    "Name": "ApplicationScaler",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Create": {
+        "Rescale": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/BackupsCreateArgs"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/BackupsMetadataResult"
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "StringsWatchResult": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "watcher-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "watcher-id"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Backups",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Create": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/BackupsCreateArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/BackupsMetadataResult"
             }
           }
         },
       }
     }
   },
+  {
+    "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"
           ]
         },
+        "BundleChangesParams": {
+          "type": "object",
+          "properties": {
+            "yaml": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "yaml"
+          ]
+        },
+        "BundleChangesResults": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BundleChange"
+              }
+            },
+            "errors": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "ConfigValue": {
           "type": "object",
           "properties": {
               "items": {
                 "$ref": "#/definitions/RelationStatus"
               }
+            },
+            "remote-applications": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/RemoteApplicationStatus"
+                }
+              }
             }
           },
           "additionalProperties": false,
             "model",
             "machines",
             "applications",
+            "remote-applications",
             "relations"
           ]
         },
-        "GetBundleChangesParams": {
-          "type": "object",
-          "properties": {
-            "yaml": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "yaml"
-          ]
-        },
-        "GetBundleChangesResults": {
-          "type": "object",
-          "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BundleChangesChange"
-              }
-            },
-            "errors": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
         "GetConstraintsResults": {
           "type": "object",
           "properties": {
           "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": {
             "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",
         "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"
+              }
+            },
             "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"
           ]
         },
         "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": {
+        "RevokeCredentials": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/UserClouds"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/CloudCredentialsResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/UsersCloudCredentials"
+              "$ref": "#/definitions/UpdateCloudCredentials"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
+        },
+        "UserCredentials": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UserClouds"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
         }
       },
       "definitions": {
             "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"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "auth-type"
-          ]
-        },
-        "CloudCredentialsResult": {
-          "type": "object",
-          "properties": {
-            "credentials": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CloudCredential"
-                }
-              }
             },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "CloudCredentialsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
+            "redacted": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudCredentialsResult"
+                "type": "string"
               }
             }
           },
-          "additionalProperties": false
-        },
-        "CloudDefaults": {
-          "type": "object",
-          "properties": {
-            "cloud-tag": {
-              "type": "string"
-            },
-            "credential": {
-              "type": "string"
-            },
-            "region": {
-              "type": "string"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "cloud-tag"
+            "auth-type"
           ]
         },
-        "CloudDefaultsResult": {
+        "CloudCredentialResult": {
           "type": "object",
           "properties": {
             "error": {
               "$ref": "#/definitions/Error"
             },
             "result": {
-              "$ref": "#/definitions/CloudDefaults"
+              "$ref": "#/definitions/CloudCredential"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "error"
-          ]
+          "additionalProperties": false
         },
-        "CloudDefaultsResults": {
+        "CloudCredentialResults": {
           "type": "object",
           "properties": {
             "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudDefaultsResult"
+                "$ref": "#/definitions/CloudCredentialResult"
               }
             }
           },
             "endpoint": {
               "type": "string"
             },
+            "identity-endpoint": {
+              "type": "string"
+            },
             "name": {
               "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           },
           "additionalProperties": false
         },
-        "Entities": {
+        "CloudsResult": {
           "type": "object",
           "properties": {
-            "entities": {
-              "type": "array",
+            "clouds": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Cloud"
+                }
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
               "items": {
                 "$ref": "#/definitions/Entity"
               }
           "type": "object",
           "additionalProperties": false
         },
-        "UserCloud": {
+        "StringResult": {
           "type": "object",
           "properties": {
-            "cloud-tag": {
-              "type": "string"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "user-tag": {
+            "result": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-tag",
-            "cloud-tag"
+            "result"
           ]
         },
-        "UserCloudCredentials": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "cloud-tag": {
-              "type": "string"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "credentials": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/CloudCredential"
-                }
+            "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"
             },
-            "user-tag": {
+            "tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-tag",
-            "cloud-tag",
-            "credentials"
+            "tag",
+            "credential"
           ]
         },
-        "UserClouds": {
+        "UpdateCloudCredentials": {
           "type": "object",
           "properties": {
-            "user-clouds": {
+            "credentials": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/UserCloud"
+                "$ref": "#/definitions/UpdateCloudCredential"
               }
             }
           },
           "additionalProperties": false
         },
-        "UsersCloudCredentials": {
+        "UserCloud": {
           "type": "object",
           "properties": {
-            "users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/UserCloudCredentials"
-              }
+            "cloud-tag": {
+              "type": "string"
+            },
+            "user-tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "users"
+            "user-tag",
+            "cloud-tag"
           ]
+        },
+        "UserClouds": {
+          "type": "object",
+          "properties": {
+            "user-clouds": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserCloud"
+              }
+            }
+          },
+          "additionalProperties": false
         }
       }
     }
             }
           }
         },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/CloudSpecResults"
+            }
+          }
+        },
         "ControllerConfig": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "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": {
-            "specs": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelMigrationSpec"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "specs"
+            "results"
           ]
         },
-        "InitiateModelMigrationResult": {
+        "HostedModelConfig": {
           "type": "object",
           "properties": {
+            "cloud-spec": {
+              "$ref": "#/definitions/CloudSpec"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
             "error": {
               "$ref": "#/definitions/Error"
             },
-            "id": {
+            "name": {
               "type": "string"
             },
-            "model-tag": {
+            "owner": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "model-tag",
-            "id"
+            "name",
+            "owner"
           ]
         },
-        "InitiateModelMigrationResults": {
+        "HostedModelConfigsResults": {
           "type": "object",
           "properties": {
-            "results": {
+            "models": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/InitiateModelMigrationResult"
+                "$ref": "#/definitions/HostedModelConfig"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "models"
           ]
         },
-        "Macaroon": {
-          "type": "object",
-          "additionalProperties": false
-        },
-        "Model": {
+        "InitiateMigrationArgs": {
           "type": "object",
           "properties": {
-            "name": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "uuid": {
-              "type": "string"
+            "specs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MigrationSpec"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "specs"
+          ]
+        },
+        "InitiateMigrationResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "migration-id": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "migration-id"
+          ]
+        },
+        "InitiateMigrationResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InitiateMigrationResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MigrationSpec": {
+          "type": "object",
+          "properties": {
+            "external-control": {
+              "type": "boolean"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "skip-initial-prechecks": {
+              "type": "boolean"
+            },
+            "target-info": {
+              "$ref": "#/definitions/MigrationTargetInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "target-info",
+            "external-control",
+            "skip-initial-prechecks"
+          ]
+        },
+        "MigrationTargetInfo": {
+          "type": "object",
+          "properties": {
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "auth-tag": {
+              "type": "string"
+            },
+            "ca-cert": {
+              "type": "string"
+            },
+            "controller-tag": {
+              "type": "string"
+            },
+            "macaroons": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag"
+          ]
+        },
+        "Model": {
+          "type": "object",
+          "properties": {
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
             "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": {
             }
           }
         },
-        "StateAddresses": {
+        "SetStatus": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
             "Result": {
-              "$ref": "#/definitions/StringsResult"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "WatchAPIHostPorts": {
+        "StateAddresses": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+              "$ref": "#/definitions/StringsResult"
             }
           }
         },
-        "WatchUnits": {
+        "UpdateStatus": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/SetStatus"
             },
             "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
             }
           }
         }
             "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"
           ]
         },
+        "CloudCredential": {
+          "type": "object",
+          "properties": {
+            "attrs": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "auth-type": {
+              "type": "string"
+            },
+            "redacted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "auth-type"
+          ]
+        },
+        "CloudSpec": {
+          "type": "object",
+          "properties": {
+            "credential": {
+              "$ref": "#/definitions/CloudCredential"
+            },
+            "endpoint": {
+              "type": "string"
+            },
+            "identity-endpoint": {
+              "type": "string"
+            },
+            "name": {
+              "type": "string"
+            },
+            "region": {
+              "type": "string"
+            },
+            "storage-endpoint": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "type",
+            "name"
+          ]
+        },
+        "CloudSpecResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/CloudSpec"
+            }
+          },
+          "additionalProperties": false
+        },
+        "CloudSpecResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudSpecResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "Entities": {
           "type": "object",
           "properties": {
             "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": {
             "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": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
             }
-          }
-        },
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResult": {
+          "type": "object",
+          "properties": {
+            "entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "entities"
+          ]
+        },
+        "EntitiesResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntitiesResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "tag"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "code": {
+              "type": "string"
+            },
+            "info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message",
+            "code"
+          ]
+        },
+        "ErrorInfo": {
+          "type": "object",
+          "properties": {
+            "macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "macaroon-path": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "additionalProperties": false
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "NotifyWatcherId": {
+              "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId"
+          ]
+        },
+        "NotifyWatchResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ProviderInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "interface-name": {
+              "type": "string"
+            },
+            "mac-address": {
+              "type": "string"
+            },
+            "provider-id": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "interface-name",
+            "mac-address",
+            "provider-id"
+          ]
+        },
+        "ProviderInterfaceInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "interfaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfo"
+              }
+            },
+            "machine-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "machine-tag",
+            "interfaces"
+          ]
+        },
+        "ProviderInterfaceInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderInterfaceInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Machiner",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "APIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Jobs": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/JobsResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
         "SetMachineAddresses": {
           "type": "object",
           "properties": {
               "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/FullMigrationStatus"
+              "$ref": "#/definitions/MasterMigrationStatus"
             }
           }
         },
-        "SetPhase": {
+        "MinionReports": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetMigrationPhaseArgs"
+            "Result": {
+              "$ref": "#/definitions/MinionReports"
             }
           }
         },
-        "Watch": {
+        "ModelInfo": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+              "$ref": "#/definitions/MigrationModelInfo"
             }
           }
-        }
+        },
+        "Prechecks": {
+          "type": "object"
+        },
+        "Reap": {
+          "type": "object"
+        },
+        "SetPhase": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMigrationPhaseArgs"
+            }
+          }
+        },
+        "SetStatusMessage": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMigrationStatusMessageArgs"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchMinionReports": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
       },
       "definitions": {
         "Error": {
           },
           "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"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "owner-tag",
+            "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"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "bytes",
+            "charms",
+            "tools"
+          ]
+        },
+        "SerializedModelTools": {
+          "type": "object",
+          "properties": {
+            "uri": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "bytes"
+            "version",
+            "uri"
           ]
         },
         "SetMigrationPhaseArgs": {
           "required": [
             "phase"
           ]
+        },
+        "SetMigrationStatusMessageArgs": {
+          "type": "object",
+          "properties": {
+            "message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "message"
+          ]
         }
       }
     }
     "Schema": {
       "type": "object",
       "properties": {
+        "Report": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MinionReport"
+            }
+          }
+        },
         "Watch": {
           "type": "object",
           "properties": {
           "type": "object",
           "additionalProperties": false
         },
+        "MinionReport": {
+          "type": "object",
+          "properties": {
+            "migration-id": {
+              "type": "string"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "success": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "migration-id",
+            "phase",
+            "success"
+          ]
+        },
         "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "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",
               "$ref": "#/definitions/SerializedModel"
             }
           }
+        },
+        "Prechecks": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MigrationModelInfo"
+            }
+          }
         }
       },
       "definitions": {
+        "MigrationModelInfo": {
+          "type": "object",
+          "properties": {
+            "agent-version": {
+              "$ref": "#/definitions/Number"
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "uuid",
+            "name",
+            "owner-tag",
+            "agent-version"
+          ]
+        },
         "ModelArgs": {
           "type": "object",
           "properties": {
             "model-tag"
           ]
         },
+        "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"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/SerializedModelTools"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "bytes"
+            "bytes",
+            "charms",
+            "tools"
+          ]
+        },
+        "SerializedModelTools": {
+          "type": "object",
+          "properties": {
+            "uri": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "uri"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelConfig",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ModelGet": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
+            }
+          }
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSet"
+            }
+          }
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelUnset"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "ConfigValue": {
+          "type": "object",
+          "properties": {
+            "source": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "value",
+            "source"
+          ]
+        },
+        "ModelConfigResults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ConfigValue"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelSet": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelUnset": {
+          "type": "object",
+          "properties": {
+            "keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
           ]
         }
       }
             }
           }
         },
-        "DestroyModel": {
-          "type": "object"
+        "DestroyModels": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "DumpModels": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MapResults"
+            }
+          }
+        },
+        "DumpModelsDB": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MapResults"
+            }
+          }
         },
         "ListModels": {
           "type": "object",
             }
           }
         },
+        "ModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelDefaultsResult"
+            }
+          }
+        },
         "ModelInfo": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "ModelStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelStatusResults"
+            }
+          }
+        },
         "ModifyModelAccess": {
           "type": "object",
           "properties": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
+        },
+        "SetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetModelDefaults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UnsetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UnsetModelDefaults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
         }
       },
       "definitions": {
           "type": "object",
           "additionalProperties": false
         },
+        "MachineHardware": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "availability-zone": {
+              "type": "string"
+            },
+            "cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "MapResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
+          ]
+        },
+        "MapResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MapResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
         "Model": {
           "type": "object",
           "properties": {
         "ModelCreateArgs": {
           "type": "object",
           "properties": {
+            "cloud-tag": {
+              "type": "string"
+            },
             "config": {
               "type": "object",
               "patternProperties": {
           },
           "additionalProperties": false,
           "required": [
-            "name",
-            "owner-tag"
+            "name",
+            "owner-tag"
+          ]
+        },
+        "ModelDefaultValues": {
+          "type": "object",
+          "properties": {
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelDefaults": {
+          "type": "object",
+          "properties": {
+            "controller": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "default": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "regions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RegionDefaults"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelDefaultsResult": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ModelDefaults"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "cloud-credential-tag": {
+              "type": "string"
+            },
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "controller-uuid": {
+              "type": "string"
+            },
+            "default-series": {
+              "type": "string"
+            },
+            "life": {
+              "type": "string"
+            },
+            "machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelMachineInfo"
+              }
+            },
+            "name": {
+              "type": "string"
+            },
+            "owner-tag": {
+              "type": "string"
+            },
+            "provider-type": {
+              "type": "string"
+            },
+            "status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfo"
+              }
+            },
+            "uuid": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "name",
+            "uuid",
+            "controller-uuid",
+            "provider-type",
+            "default-series",
+            "cloud-tag",
+            "owner-tag",
+            "life",
+            "status",
+            "users",
+            "machines"
+          ]
+        },
+        "ModelInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ModelInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelMachineInfo": {
+          "type": "object",
+          "properties": {
+            "hardware": {
+              "$ref": "#/definitions/MachineHardware"
+            },
+            "has-vote": {
+              "type": "boolean"
+            },
+            "id": {
+              "type": "string"
+            },
+            "instance-id": {
+              "type": "string"
+            },
+            "status": {
+              "type": "string"
+            },
+            "wants-vote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "id"
           ]
         },
-        "ModelInfo": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
-            "cloud": {
-              "type": "string"
-            },
-            "cloud-credential": {
-              "type": "string"
-            },
-            "cloud-region": {
-              "type": "string"
-            },
-            "controller-uuid": {
-              "type": "string"
+            "application-count": {
+              "type": "integer"
             },
-            "default-series": {
-              "type": "string"
+            "hosted-machine-count": {
+              "type": "integer"
             },
             "life": {
               "type": "string"
             },
-            "name": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            },
-            "provider-type": {
-              "type": "string"
-            },
-            "status": {
-              "$ref": "#/definitions/EntityStatus"
-            },
-            "users": {
+            "machines": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelUserInfo"
+                "$ref": "#/definitions/ModelMachineInfo"
               }
             },
-            "uuid": {
+            "model-tag": {
+              "type": "string"
+            },
+            "owner-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "name",
-            "uuid",
-            "controller-uuid",
-            "provider-type",
-            "default-series",
-            "cloud",
-            "owner-tag",
+            "model-tag",
             "life",
-            "status",
-            "users"
+            "hosted-machine-count",
+            "application-count",
+            "owner-tag"
           ]
         },
-        "ModelInfoResult": {
+        "ModelStatusResults": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "result": {
-              "$ref": "#/definitions/ModelInfo"
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelStatus"
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "models"
+          ]
         },
-        "ModelInfoResults": {
+        "ModelUnsetKeys": {
           "type": "object",
           "properties": {
-            "results": {
+            "cloud-region": {
+              "type": "string"
+            },
+            "cloud-tag": {
+              "type": "string"
+            },
+            "keys": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelInfoResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "keys"
           ]
         },
         "ModelUserInfo": {
             "changes"
           ]
         },
+        "RegionDefaults": {
+          "type": "object",
+          "properties": {
+            "region-name": {
+              "type": "string"
+            },
+            "value": {
+              "type": "object",
+              "additionalProperties": true
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "region-name",
+            "value"
+          ]
+        },
+        "SetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelDefaultValues"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "config"
+          ]
+        },
+        "UnsetModelDefaults": {
+          "type": "object",
+          "properties": {
+            "keys": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUnsetKeys"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "keys"
+          ]
+        },
         "UserModel": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "MarkMachinesForRemoval": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
         "ModelConfig": {
           "type": "object",
           "properties": {
             "container": {
               "type": "string"
             },
-            "cpu-cores": {
+            "cores": {
               "type": "integer"
             },
             "cpu-power": {
   },
   {
     "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": {
             }
           }
         },
-        "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"