Async model updates
[osm/N2VC.git] / juju / client / schemas.json
index 0c19648..9edb1fe 100644 (file)
@@ -1,7 +1,7 @@
 [
   {
     "Name": "Action",
-    "Version": 2,
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
             }
           }
         },
-        "ApplicationsCharmsActions": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationsCharmActionsResults"
-            }
-          }
-        },
         "Cancel": {
           "type": "object",
           "properties": {
               "$ref": "#/definitions/ActionResults"
             }
           }
+        },
+        "ServicesCharmActions": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ServicesCharmActionsResults"
+            }
+          }
         }
       },
       "definitions": {
           },
           "additionalProperties": false
         },
-        "ActionSpec": {
-          "type": "object",
-          "properties": {
-            "Description": {
-              "type": "string"
-            },
-            "Params": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Description",
-            "Params"
-          ]
-        },
         "Actions": {
           "type": "object",
           "properties": {
-            "ActionSpecs": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/ActionSpec"
-                }
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Action"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "ActionSpecs"
-          ]
+          "additionalProperties": false
         },
         "ActionsByName": {
           "type": "object",
           },
           "additionalProperties": false
         },
-        "ApplicationCharmActionsResult": {
-          "type": "object",
-          "properties": {
-            "ApplicationTag": {
-              "type": "string"
-            },
-            "actions": {
-              "$ref": "#/definitions/Actions"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ApplicationsCharmActionsResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationCharmActionsResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
         "Entities": {
           "type": "object",
           "properties": {
         "RunParams": {
           "type": "object",
           "properties": {
-            "Applications": {
+            "Commands": {
+              "type": "string"
+            },
+            "Machines": {
               "type": "array",
               "items": {
                 "type": "string"
               }
             },
-            "Commands": {
-              "type": "string"
-            },
-            "Machines": {
+            "Services": {
               "type": "array",
               "items": {
                 "type": "string"
             "Commands",
             "Timeout",
             "Machines",
-            "Applications",
+            "Services",
             "Units"
           ]
         },
+        "ServiceCharmActionsResult": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "$ref": "#/definitions/Actions"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "servicetag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ServicesCharmActionsResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ServiceCharmActionsResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "caveat": {
           "type": "object",
           "properties": {
     }
   },
   {
-    "Name": "Application",
+    "Name": "Backups",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "AddRelation": {
+        "Create": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/AddRelation"
+              "$ref": "#/definitions/BackupsCreateArgs"
             },
             "Result": {
-              "$ref": "#/definitions/AddRelationResults"
+              "$ref": "#/definitions/BackupsMetadataResult"
             }
           }
         },
-        "AddUnits": {
+        "FinishRestore": {
+          "type": "object"
+        },
+        "Info": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/AddApplicationUnits"
+              "$ref": "#/definitions/BackupsInfoArgs"
             },
             "Result": {
-              "$ref": "#/definitions/AddApplicationUnitsResults"
+              "$ref": "#/definitions/BackupsMetadataResult"
             }
           }
         },
-        "CharmRelations": {
+        "List": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationCharmRelations"
+              "$ref": "#/definitions/BackupsListArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ApplicationCharmRelationsResults"
+              "$ref": "#/definitions/BackupsListResult"
             }
           }
         },
-        "Deploy": {
+        "PrepareRestore": {
+          "type": "object"
+        },
+        "Remove": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationsDeploy"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/BackupsRemoveArgs"
             }
           }
         },
-        "Destroy": {
+        "Restore": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationDestroy"
+              "$ref": "#/definitions/RestoreArgs"
             }
           }
-        },
-        "DestroyRelation": {
+        }
+      },
+      "definitions": {
+        "BackupsCreateArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyRelation"
+            "Notes": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Notes"
+          ]
         },
-        "DestroyUnits": {
+        "BackupsInfoArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyApplicationUnits"
+            "ID": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ID"
+          ]
         },
-        "Expose": {
+        "BackupsListArgs": {
           "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationExpose"
-            }
-          }
+          "additionalProperties": false
         },
-        "Get": {
+        "BackupsListResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationGet"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationGetResults"
+            "List": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BackupsMetadataResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "List"
+          ]
         },
-        "GetCharmURL": {
+        "BackupsMetadataResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationGet"
+            "CACert": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StringResult"
+            "CAPrivateKey": {
+              "type": "string"
+            },
+            "Checksum": {
+              "type": "string"
+            },
+            "ChecksumFormat": {
+              "type": "string"
+            },
+            "Finished": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Hostname": {
+              "type": "string"
+            },
+            "ID": {
+              "type": "string"
+            },
+            "Machine": {
+              "type": "string"
+            },
+            "Model": {
+              "type": "string"
+            },
+            "Notes": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            },
+            "Started": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Stored": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Version": {
+              "$ref": "#/definitions/Number"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ID",
+            "Checksum",
+            "ChecksumFormat",
+            "Size",
+            "Stored",
+            "Started",
+            "Finished",
+            "Notes",
+            "Model",
+            "Machine",
+            "Hostname",
+            "Version",
+            "CACert",
+            "CAPrivateKey"
+          ]
         },
-        "GetConstraints": {
+        "BackupsRemoveArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/GetApplicationConstraints"
-            },
-            "Result": {
-              "$ref": "#/definitions/GetConstraintsResults"
+            "ID": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ID"
+          ]
         },
-        "Set": {
+        "Number": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationSet"
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
         },
-        "SetCharm": {
+        "RestoreArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationSetCharm"
+            "BackupId": {
+              "type": "string"
             }
-          }
-        },
-        "SetConstraints": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "BackupId"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Block",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "List": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetConstraints"
+            "Result": {
+              "$ref": "#/definitions/BlockResults"
             }
           }
         },
-        "SetMetricCredentials": {
+        "SwitchBlockOff": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationMetricCredentials"
+              "$ref": "#/definitions/BlockSwitchParams"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Unexpose": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationUnexpose"
-            }
-          }
-        },
-        "Unset": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ApplicationUnset"
+              "$ref": "#/definitions/ErrorResult"
             }
           }
         },
-        "Update": {
+        "SwitchBlockOn": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationUpdate"
+              "$ref": "#/definitions/BlockSwitchParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
             }
           }
         }
       },
       "definitions": {
-        "AddApplicationUnits": {
+        "Block": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
+            "id": {
               "type": "string"
             },
-            "NumUnits": {
-              "type": "integer"
+            "message": {
+              "type": "string"
             },
-            "Placement": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Placement"
-              }
+            "tag": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "NumUnits",
-            "Placement"
+            "id",
+            "tag",
+            "type"
           ]
         },
-        "AddApplicationUnitsResults": {
+        "BlockResult": {
           "type": "object",
           "properties": {
-            "Units": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/Block"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Units"
+            "result"
           ]
         },
-        "AddRelation": {
+        "BlockResults": {
           "type": "object",
           "properties": {
-            "Endpoints": {
+            "results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/BlockResult"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Endpoints"
-          ]
+          "additionalProperties": false
         },
-        "AddRelationResults": {
+        "BlockSwitchParams": {
           "type": "object",
           "properties": {
-            "Endpoints": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/Relation"
-                }
-              }
+            "message": {
+              "type": "string"
+            },
+            "type": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Endpoints"
+            "type"
           ]
         },
-        "ApplicationCharmRelations": {
+        "Error": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
+            "Code": {
+              "type": "string"
+            },
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName"
+            "Message",
+            "Code"
           ]
         },
-        "ApplicationCharmRelationsResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "CharmRelations": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "CharmRelations"
+            "Error"
           ]
         },
-        "ApplicationDeploy": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
-            },
-            "Channel": {
-              "type": "string"
-            },
-            "CharmUrl": {
-              "type": "string"
-            },
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "ConfigYAML": {
-              "type": "string"
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "EndpointBindings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
               }
             },
-            "NumUnits": {
-              "type": "integer"
-            },
-            "Placement": {
+            "data": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Placement"
+                "type": "integer"
               }
             },
-            "Resources": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Series": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Storage": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/Constraints"
-                }
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "Series",
-            "CharmUrl",
-            "Channel",
-            "NumUnits",
-            "Config",
-            "ConfigYAML",
-            "Constraints",
-            "Placement",
-            "Storage",
-            "EndpointBindings",
-            "Resources"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "ApplicationDestroy": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "ApplicationExpose": {
+        "packet": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "ApplicationGet": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "CharmRevisionUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "UpdateLatestRevisions": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
+            "Code": {
+              "type": "string"
+            },
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName"
+            "Message",
+            "Code"
           ]
         },
-        "ApplicationGetResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Application": {
-              "type": "string"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Charm": {
+            "MacaroonPath": {
               "type": "string"
-            },
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Application",
-            "Charm",
-            "Config",
-            "Constraints"
+            "Error"
           ]
         },
-        "ApplicationMetricCredential": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "MetricCredentials": {
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
               "type": "array",
               "items": {
                 "type": "integer"
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "MetricCredentials"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "ApplicationMetricCredentials": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Creds": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationMetricCredential"
-              }
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Creds"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "ApplicationSet": {
+        "packet": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
+            "headerLen": {
+              "type": "integer"
             },
-            "Options": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "Options"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Charms",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "CharmInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmInfo"
+            },
+            "Result": {
+              "$ref": "#/definitions/CharmInfo"
+            }
+          }
         },
-        "ApplicationSetCharm": {
+        "IsMetered": {
           "type": "object",
           "properties": {
-            "applicationname": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/CharmInfo"
             },
-            "charmurl": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/IsMeteredResult"
+            }
+          }
+        },
+        "List": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/CharmsList"
             },
-            "cs-channel": {
+            "Result": {
+              "$ref": "#/definitions/CharmsListResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "CharmInfo": {
+          "type": "object",
+          "properties": {
+            "CharmURL": {
               "type": "string"
-            },
-            "forceseries": {
-              "type": "boolean"
-            },
-            "forceunits": {
-              "type": "boolean"
-            },
-            "resourceids": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "applicationname",
-            "charmurl",
-            "cs-channel",
-            "forceunits",
-            "forceseries",
-            "resourceids"
+            "CharmURL"
           ]
         },
-        "ApplicationUnexpose": {
+        "CharmsList": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
+            "Names": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName"
+            "Names"
           ]
         },
-        "ApplicationUnset": {
+        "CharmsListResult": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
-            },
-            "Options": {
+            "CharmURLs": {
               "type": "array",
               "items": {
                 "type": "string"
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "Options"
+            "CharmURLs"
           ]
         },
-        "ApplicationUpdate": {
+        "IsMeteredResult": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
-            },
-            "CharmUrl": {
-              "type": "string"
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "ForceCharmUrl": {
-              "type": "boolean"
-            },
-            "ForceSeries": {
+            "Metered": {
               "type": "boolean"
-            },
-            "MinUnits": {
-              "type": "integer"
-            },
-            "SettingsStrings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "SettingsYAML": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ApplicationName",
-            "CharmUrl",
-            "ForceCharmUrl",
-            "ForceSeries",
-            "MinUnits",
-            "SettingsStrings",
-            "SettingsYAML",
-            "Constraints"
-          ]
-        },
-        "ApplicationsDeploy": {
-          "type": "object",
-          "properties": {
-            "Applications": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationDeploy"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Applications"
-          ]
-        },
-        "Constraints": {
-          "type": "object",
-          "properties": {
-            "Count": {
-              "type": "integer"
-            },
-            "Pool": {
-              "type": "string"
-            },
-            "Size": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Pool",
-            "Size",
-            "Count"
-          ]
-        },
-        "DestroyApplicationUnits": {
-          "type": "object",
-          "properties": {
-            "UnitNames": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "UnitNames"
+            "Metered"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Cleaner",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Cleanup": {
+          "type": "object"
         },
-        "DestroyRelation": {
+        "WatchCleanups": {
           "type": "object",
           "properties": {
-            "Endpoints": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Endpoints"
-          ]
-        },
+          }
+        }
+      },
+      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "GetApplicationConstraints": {
-          "type": "object",
-          "properties": {
-            "ApplicationName": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ApplicationName"
-          ]
-        },
-        "GetConstraintsResults": {
-          "type": "object",
-          "properties": {
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Constraints"
-          ]
-        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "Placement": {
-          "type": "object",
-          "properties": {
-            "Directive": {
-              "type": "string"
-            },
-            "Scope": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Scope",
-            "Directive"
-          ]
-        },
-        "Relation": {
-          "type": "object",
-          "properties": {
-            "Interface": {
-              "type": "string"
-            },
-            "Limit": {
-              "type": "integer"
-            },
-            "Name": {
-              "type": "string"
-            },
-            "Optional": {
-              "type": "boolean"
-            },
-            "Role": {
-              "type": "string"
-            },
-            "Scope": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Name",
-            "Role",
-            "Interface",
-            "Optional",
-            "Limit",
-            "Scope"
-          ]
-        },
-        "SetConstraints": {
-          "type": "object",
-          "properties": {
-            "ApplicationName": {
-              "type": "string"
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ApplicationName",
-            "Constraints"
-          ]
-        },
-        "StringResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "Value": {
-          "type": "object",
-          "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "container": {
-              "type": "string"
-            },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "instance-type": {
-              "type": "string"
-            },
-            "mem": {
-              "type": "integer"
-            },
-            "root-disk": {
-              "type": "integer"
-            },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "virt-type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
         "caveat": {
           "type": "object",
           "properties": {
     }
   },
   {
-    "Name": "ApplicationScaler",
+    "Name": "Client",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Rescale": {
+        "APIHostPorts": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/APIHostPortsResult"
             }
           }
         },
-        "Watch": {
+        "AbortCurrentUpgrade": {
+          "type": "object"
+        },
+        "AddCharm": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
+            "Params": {
+              "$ref": "#/definitions/AddCharm"
             }
           }
-        }
-      },
-      "definitions": {
-        "Entities": {
-          "type": "object",
-          "properties": {
-            "Entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities"
-          ]
         },
-        "Entity": {
+        "AddCharmWithAuthorization": {
           "type": "object",
           "properties": {
-            "Tag": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/AddCharmWithAuthorization"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
+          }
         },
-        "Error": {
+        "AddMachines": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
             },
-            "Message": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Message",
-            "Code"
-          ]
+          }
         },
-        "ErrorInfo": {
+        "AddMachinesV2": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Params": {
+              "$ref": "#/definitions/AddMachines"
             },
-            "MacaroonPath": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Result": {
+              "$ref": "#/definitions/AddMachinesResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
+          }
         },
-        "ErrorResults": {
+        "AgentVersion": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
+            "Result": {
+              "$ref": "#/definitions/AgentVersionResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          }
         },
-        "Macaroon": {
+        "CharmInfo": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Params": {
+              "$ref": "#/definitions/CharmInfo"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "Result": {
+              "$ref": "#/definitions/CharmInfo"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
+          }
         },
-        "StringsWatchResult": {
+        "DestroyMachines": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "StringsWatcherId": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/DestroyMachines"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
-          ]
+          }
         },
-        "caveat": {
+        "DestroyModel": {
+          "type": "object"
+        },
+        "FindTools": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Params": {
+              "$ref": "#/definitions/FindToolsParams"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Result": {
+              "$ref": "#/definitions/FindToolsResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
+          }
         },
-        "packet": {
+        "FullStatus": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/StatusParams"
             },
-            "totalLen": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/FullStatus"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Backups",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Create": {
+          }
+        },
+        "GetBundleChanges": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/BackupsCreateArgs"
+              "$ref": "#/definitions/GetBundleChangesParams"
             },
             "Result": {
-              "$ref": "#/definitions/BackupsMetadataResult"
+              "$ref": "#/definitions/GetBundleChangesResults"
             }
           }
         },
-        "FinishRestore": {
-          "type": "object"
-        },
-        "Info": {
+        "GetModelConstraints": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/BackupsInfoArgs"
-            },
             "Result": {
-              "$ref": "#/definitions/BackupsMetadataResult"
+              "$ref": "#/definitions/GetConstraintsResults"
             }
           }
         },
-        "List": {
+        "InjectMachines": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/BackupsListArgs"
+              "$ref": "#/definitions/AddMachines"
             },
             "Result": {
-              "$ref": "#/definitions/BackupsListResult"
+              "$ref": "#/definitions/AddMachinesResults"
             }
           }
         },
-        "PrepareRestore": {
-          "type": "object"
-        },
-        "Remove": {
+        "ModelGet": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/BackupsRemoveArgs"
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResults"
             }
           }
         },
-        "Restore": {
+        "ModelInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/RestoreArgs"
+            "Result": {
+              "$ref": "#/definitions/ModelInfo"
             }
           }
-        }
-      },
-      "definitions": {
-        "BackupsCreateArgs": {
+        },
+        "ModelSet": {
           "type": "object",
           "properties": {
-            "Notes": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/ModelSet"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Notes"
-          ]
+          }
         },
-        "BackupsInfoArgs": {
+        "ModelUnset": {
           "type": "object",
           "properties": {
-            "ID": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/ModelUnset"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ID"
-          ]
+          }
         },
-        "BackupsListArgs": {
+        "ModelUserInfo": {
           "type": "object",
-          "additionalProperties": false
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelUserInfoResults"
+            }
+          }
         },
-        "BackupsListResult": {
+        "PrivateAddress": {
           "type": "object",
           "properties": {
-            "List": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BackupsMetadataResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/PrivateAddress"
+            },
+            "Result": {
+              "$ref": "#/definitions/PrivateAddressResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "List"
-          ]
+          }
         },
-        "BackupsMetadataResult": {
+        "ProvisioningScript": {
           "type": "object",
           "properties": {
-            "CACert": {
-              "type": "string"
-            },
-            "CAPrivateKey": {
-              "type": "string"
-            },
-            "Checksum": {
-              "type": "string"
-            },
-            "ChecksumFormat": {
-              "type": "string"
-            },
-            "Finished": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Hostname": {
-              "type": "string"
-            },
-            "ID": {
-              "type": "string"
-            },
-            "Machine": {
-              "type": "string"
-            },
-            "Model": {
-              "type": "string"
-            },
-            "Notes": {
-              "type": "string"
-            },
-            "Series": {
-              "type": "string"
-            },
-            "Size": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/ProvisioningScriptParams"
             },
-            "Started": {
-              "type": "string",
-              "format": "date-time"
+            "Result": {
+              "$ref": "#/definitions/ProvisioningScriptResult"
+            }
+          }
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/PublicAddress"
             },
-            "Stored": {
-              "type": "string",
-              "format": "date-time"
+            "Result": {
+              "$ref": "#/definitions/PublicAddressResults"
+            }
+          }
+        },
+        "ResolveCharms": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ResolveCharms"
             },
-            "Version": {
-              "$ref": "#/definitions/Number"
+            "Result": {
+              "$ref": "#/definitions/ResolveCharmResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ID",
-            "Checksum",
-            "ChecksumFormat",
-            "Size",
-            "Stored",
-            "Started",
-            "Finished",
-            "Notes",
-            "Model",
-            "Machine",
-            "Hostname",
-            "Version",
-            "Series",
-            "CACert",
-            "CAPrivateKey"
-          ]
+          }
         },
-        "BackupsRemoveArgs": {
+        "Resolved": {
           "type": "object",
           "properties": {
-            "ID": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/Resolved"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ID"
-          ]
+          }
         },
-        "Number": {
+        "RetryProvisioning": {
           "type": "object",
           "properties": {
-            "Build": {
-              "type": "integer"
-            },
-            "Major": {
-              "type": "integer"
-            },
-            "Minor": {
-              "type": "integer"
-            },
-            "Patch": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "Tag": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Major",
-            "Minor",
-            "Tag",
-            "Patch",
-            "Build"
-          ]
+          }
         },
-        "RestoreArgs": {
+        "SetModelAgentVersion": {
           "type": "object",
           "properties": {
-            "BackupId": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/SetModelAgentVersion"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "BackupId"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Block",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "List": {
+          }
+        },
+        "SetModelConstraints": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/BlockResults"
+            "Params": {
+              "$ref": "#/definitions/SetConstraints"
             }
           }
         },
-        "SwitchBlockOff": {
+        "StatusHistory": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/BlockSwitchParams"
+              "$ref": "#/definitions/StatusHistoryArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResult"
+              "$ref": "#/definitions/StatusHistoryResults"
             }
           }
         },
-        "SwitchBlockOn": {
+        "WatchAll": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/BlockSwitchParams"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResult"
+              "$ref": "#/definitions/AllWatcherId"
             }
           }
         }
       },
       "definitions": {
-        "Block": {
+        "APIHostPortsResult": {
           "type": "object",
           "properties": {
-            "id": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "tag": {
-              "type": "string"
-            },
-            "type": {
-              "type": "string"
+            "Servers": {
+              "type": "array",
+              "items": {
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "id",
-            "tag",
-            "type"
+            "Servers"
           ]
         },
-        "BlockResult": {
+        "AddCharm": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Channel": {
+              "type": "string"
             },
-            "result": {
-              "$ref": "#/definitions/Block"
+            "URL": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "result"
+            "URL",
+            "Channel"
           ]
         },
-        "BlockResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BlockResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "BlockSwitchParams": {
+        "AddCharmWithAuthorization": {
           "type": "object",
           "properties": {
-            "message": {
+            "Channel": {
               "type": "string"
             },
-            "type": {
+            "CharmStoreMacaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "URL": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "type"
+            "URL",
+            "Channel",
+            "CharmStoreMacaroon"
           ]
         },
-        "Error": {
+        "AddMachineParams": {
           "type": "object",
           "properties": {
-            "Code": {
+            "Addrs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "ContainerType": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Disks": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Constraints"
+              }
             },
-            "Message": {
+            "HardwareCharacteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "InstanceId": {
+              "type": "string"
+            },
+            "Jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "Nonce": {
+              "type": "string"
+            },
+            "ParentId": {
+              "type": "string"
+            },
+            "Placement": {
+              "$ref": "#/definitions/Placement"
+            },
+            "Series": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "Series",
+            "Constraints",
+            "Jobs",
+            "Disks",
+            "Placement",
+            "ParentId",
+            "ContainerType",
+            "InstanceId",
+            "Nonce",
+            "HardwareCharacteristics",
+            "Addrs"
           ]
         },
-        "ErrorInfo": {
+        "AddMachines": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
-              "type": "string"
+            "MachineParams": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachineParams"
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "MachineParams"
+          ]
         },
-        "ErrorResult": {
+        "AddMachinesResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
+            },
+            "Machine": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
+            "Machine",
             "Error"
           ]
         },
-        "Macaroon": {
+        "AddMachinesResults": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            "Machines": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/AddMachinesResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Machines"
           ]
         },
-        "caveat": {
+        "Address": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
+            "Scope": {
+              "type": "string"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "SpaceName": {
+              "type": "string"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Type": {
+              "type": "string"
+            },
+            "Value": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "Value",
+            "Type",
+            "Scope"
           ]
         },
-        "packet": {
+        "AgentVersionResult": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
+            "Version": {
+              "$ref": "#/definitions/Number"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Version"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "CharmRevisionUpdater",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "UpdateLatestRevisions": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ErrorResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "Error": {
+        },
+        "AllWatcherId": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "Message": {
+            "AllWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "AllWatcherId"
           ]
         },
-        "ErrorInfo": {
+        "Binary": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Arch": {
+              "type": "string"
             },
-            "MacaroonPath": {
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
               "type": "string"
             }
           },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "Number",
+            "Series",
+            "Arch"
           ]
         },
-        "Macaroon": {
+        "BundleChangesChange": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
+            "args": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "object",
+                "additionalProperties": true
               }
             },
             "id": {
-              "$ref": "#/definitions/packet"
+              "type": "string"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "method": {
+              "type": "string"
             },
-            "sig": {
+            "requires": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
             "id",
-            "caveats",
-            "sig"
+            "method",
+            "args",
+            "requires"
           ]
         },
-        "caveat": {
+        "CharmInfo": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "CharmURL": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "CharmURL"
           ]
         },
-        "packet": {
+        "Constraints": {
           "type": "object",
           "properties": {
-            "headerLen": {
+            "Count": {
               "type": "integer"
             },
-            "start": {
-              "type": "integer"
+            "Pool": {
+              "type": "string"
             },
-            "totalLen": {
+            "Size": {
               "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Pool",
+            "Size",
+            "Count"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Charms",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "CharmInfo": {
+        },
+        "DestroyMachines": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/CharmInfo"
+            "Force": {
+              "type": "boolean"
             },
-            "Result": {
-              "$ref": "#/definitions/CharmInfo"
+            "MachineNames": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "MachineNames",
+            "Force"
+          ]
         },
-        "IsMetered": {
+        "DetailedStatus": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/CharmInfo"
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/IsMeteredResult"
+            "Err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "Info": {
+              "type": "string"
+            },
+            "Kind": {
+              "type": "string"
+            },
+            "Life": {
+              "type": "string"
+            },
+            "Since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Status": {
+              "type": "string"
+            },
+            "Version": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Status",
+            "Info",
+            "Data",
+            "Since",
+            "Kind",
+            "Version",
+            "Life",
+            "Err"
+          ]
         },
-        "List": {
+        "EndpointStatus": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/CharmsList"
+            "Name": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/CharmsListResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "CharmInfo": {
-          "type": "object",
-          "properties": {
-            "CharmURL": {
+            "Role": {
+              "type": "string"
+            },
+            "ServiceName": {
               "type": "string"
+            },
+            "Subordinate": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "CharmURL"
+            "ServiceName",
+            "Name",
+            "Role",
+            "Subordinate"
           ]
         },
-        "CharmsList": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "Names": {
+            "Entities": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Names"
+            "Entities"
           ]
         },
-        "CharmsListResult": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "CharmURLs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "CharmURLs"
+            "Tag"
           ]
         },
-        "IsMeteredResult": {
+        "EntityStatus": {
           "type": "object",
           "properties": {
-            "Metered": {
-              "type": "boolean"
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Info": {
+              "type": "string"
+            },
+            "Since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Status": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Metered"
+            "Status",
+            "Info",
+            "Data",
+            "Since"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Cleaner",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Cleanup": {
-          "type": "object"
         },
-        "WatchCleanups": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "Macaroon": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Error"
           ]
         },
-        "NotifyWatchResult": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "NotifyWatcherId": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "Results"
           ]
         },
-        "caveat": {
+        "FindToolsParams": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
+            "Arch": {
+              "type": "string"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "MajorVersion": {
+              "type": "integer"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "MinorVersion": {
+              "type": "integer"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "Number",
+            "MajorVersion",
+            "MinorVersion",
+            "Arch",
+            "Series"
           ]
         },
-        "packet": {
+        "FindToolsResult": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "totalLen": {
-              "type": "integer"
+            "List": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "List",
+            "Error"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Client",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "AbortCurrentUpgrade": {
-          "type": "object"
-        },
-        "AddCharm": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddCharm"
-            }
-          }
-        },
-        "AddCharmWithAuthorization": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddCharmWithAuthorization"
-            }
-          }
         },
-        "AddMachines": {
+        "FullStatus": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddMachines"
+            "AvailableVersion": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/AddMachinesResults"
-            }
-          }
-        },
-        "AddMachinesV2": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddMachines"
+            "Machines": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MachineStatus"
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/AddMachinesResults"
+            "ModelName": {
+              "type": "string"
+            },
+            "Relations": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/RelationStatus"
+              }
+            },
+            "Services": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/ServiceStatus"
+                }
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ModelName",
+            "AvailableVersion",
+            "Machines",
+            "Services",
+            "Relations"
+          ]
         },
-        "AgentVersion": {
+        "GetBundleChangesParams": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/AgentVersionResult"
+            "yaml": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "yaml"
+          ]
         },
-        "CharmInfo": {
+        "GetBundleChangesResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/CharmInfo"
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BundleChangesChange"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/CharmInfo"
+            "errors": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "DestroyMachines": {
+        "GetConstraintsResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyMachines"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
             }
-          }
-        },
-        "DestroyModel": {
-          "type": "object"
+          },
+          "additionalProperties": false,
+          "required": [
+            "Constraints"
+          ]
         },
-        "FindTools": {
+        "HardwareCharacteristics": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/FindToolsParams"
+            "Arch": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/FindToolsResult"
-            }
-          }
-        },
-        "FullStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/StatusParams"
+            "AvailabilityZone": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/FullStatus"
+            "CpuCores": {
+              "type": "integer"
+            },
+            "CpuPower": {
+              "type": "integer"
+            },
+            "Mem": {
+              "type": "integer"
+            },
+            "RootDisk": {
+              "type": "integer"
+            },
+            "Tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "GetBundleChanges": {
+        "HostPort": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/GetBundleChangesParams"
+            "Address": {
+              "$ref": "#/definitions/Address"
             },
-            "Result": {
-              "$ref": "#/definitions/GetBundleChangesResults"
+            "Port": {
+              "type": "integer"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "Port"
+          ]
         },
-        "GetModelConstraints": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/GetConstraintsResults"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
+            },
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
+          ]
+        },
+        "MachineStatus": {
+          "type": "object",
+          "properties": {
+            "AgentStatus": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "Containers": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MachineStatus"
+                }
+              }
+            },
+            "DNSName": {
+              "type": "string"
+            },
+            "Hardware": {
+              "type": "string"
+            },
+            "HasVote": {
+              "type": "boolean"
+            },
+            "Id": {
+              "type": "string"
+            },
+            "InstanceId": {
+              "type": "string"
+            },
+            "InstanceStatus": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "Jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "Series": {
+              "type": "string"
+            },
+            "WantsVote": {
+              "type": "boolean"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "AgentStatus",
+            "InstanceStatus",
+            "DNSName",
+            "InstanceId",
+            "Series",
+            "Id",
+            "Containers",
+            "Hardware",
+            "Jobs",
+            "HasVote",
+            "WantsVote"
+          ]
+        },
+        "MeterStatus": {
+          "type": "object",
+          "properties": {
+            "Color": {
+              "type": "string"
+            },
+            "Message": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Color",
+            "Message"
+          ]
+        },
+        "ModelConfigResults": {
+          "type": "object",
+          "properties": {
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Config"
+          ]
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "DefaultSeries": {
+              "type": "string"
+            },
+            "Life": {
+              "type": "string"
+            },
+            "Name": {
+              "type": "string"
+            },
+            "OwnerTag": {
+              "type": "string"
+            },
+            "ProviderType": {
+              "type": "string"
+            },
+            "ServerUUID": {
+              "type": "string"
+            },
+            "Status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "UUID": {
+              "type": "string"
+            },
+            "Users": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfo"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Name",
+            "UUID",
+            "ServerUUID",
+            "ProviderType",
+            "DefaultSeries",
+            "OwnerTag",
+            "Life",
+            "Status",
+            "Users"
+          ]
+        },
+        "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"
+          ]
+        },
+        "ModelUserInfo": {
+          "type": "object",
+          "properties": {
+            "access": {
+              "type": "string"
+            },
+            "displayname": {
+              "type": "string"
+            },
+            "lastconnection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "user": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "user",
+            "displayname",
+            "lastconnection",
+            "access"
+          ]
+        },
+        "ModelUserInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "$ref": "#/definitions/ModelUserInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelUserInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelUserInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "Number": {
+          "type": "object",
+          "properties": {
+            "Build": {
+              "type": "integer"
+            },
+            "Major": {
+              "type": "integer"
+            },
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "integer"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
+        },
+        "Placement": {
+          "type": "object",
+          "properties": {
+            "Directive": {
+              "type": "string"
+            },
+            "Scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Scope",
+            "Directive"
+          ]
+        },
+        "PrivateAddress": {
+          "type": "object",
+          "properties": {
+            "Target": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Target"
+          ]
+        },
+        "PrivateAddressResults": {
+          "type": "object",
+          "properties": {
+            "PrivateAddress": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "PrivateAddress"
+          ]
+        },
+        "ProvisioningScriptParams": {
+          "type": "object",
+          "properties": {
+            "DataDir": {
+              "type": "string"
+            },
+            "DisablePackageCommands": {
+              "type": "boolean"
+            },
+            "MachineId": {
+              "type": "string"
+            },
+            "Nonce": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "MachineId",
+            "Nonce",
+            "DataDir",
+            "DisablePackageCommands"
+          ]
+        },
+        "ProvisioningScriptResult": {
+          "type": "object",
+          "properties": {
+            "Script": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Script"
+          ]
+        },
+        "PublicAddress": {
+          "type": "object",
+          "properties": {
+            "Target": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Target"
+          ]
+        },
+        "PublicAddressResults": {
+          "type": "object",
+          "properties": {
+            "PublicAddress": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "PublicAddress"
+          ]
+        },
+        "RelationStatus": {
+          "type": "object",
+          "properties": {
+            "Endpoints": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EndpointStatus"
+              }
+            },
+            "Id": {
+              "type": "integer"
+            },
+            "Interface": {
+              "type": "string"
+            },
+            "Key": {
+              "type": "string"
+            },
+            "Scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Id",
+            "Key",
+            "Interface",
+            "Scope",
+            "Endpoints"
+          ]
+        },
+        "ResolveCharmResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "type": "string"
+            },
+            "URL": {
+              "$ref": "#/definitions/URL"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ResolveCharmResults": {
+          "type": "object",
+          "properties": {
+            "URLs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ResolveCharmResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "URLs"
+          ]
+        },
+        "ResolveCharms": {
+          "type": "object",
+          "properties": {
+            "References": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/URL"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "References"
+          ]
+        },
+        "Resolved": {
+          "type": "object",
+          "properties": {
+            "Retry": {
+              "type": "boolean"
+            },
+            "UnitName": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "UnitName",
+            "Retry"
+          ]
+        },
+        "ServiceStatus": {
+          "type": "object",
+          "properties": {
+            "CanUpgradeTo": {
+              "type": "string"
+            },
+            "Charm": {
+              "type": "string"
+            },
+            "Err": {
+              "type": "object",
+              "additionalProperties": true
+            },
+            "Exposed": {
+              "type": "boolean"
+            },
+            "Life": {
+              "type": "string"
+            },
+            "MeterStatuses": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/MeterStatus"
+                }
+              }
+            },
+            "Relations": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "Status": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "SubordinateTo": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "Units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitStatus"
+                }
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Err",
+            "Charm",
+            "Exposed",
+            "Life",
+            "Relations",
+            "CanUpgradeTo",
+            "SubordinateTo",
+            "Units",
+            "MeterStatuses",
+            "Status"
+          ]
         },
-        "InjectMachines": {
+        "SetConstraints": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddMachines"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "ServiceName": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ServiceName",
+            "Constraints"
+          ]
+        },
+        "SetModelAgentVersion": {
+          "type": "object",
+          "properties": {
+            "Version": {
+              "$ref": "#/definitions/Number"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Version"
+          ]
+        },
+        "StatusHistoryArgs": {
+          "type": "object",
+          "properties": {
+            "Kind": {
+              "type": "string"
+            },
+            "Name": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Kind",
+            "Size",
+            "Name"
+          ]
+        },
+        "StatusHistoryResults": {
+          "type": "object",
+          "properties": {
+            "Statuses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DetailedStatus"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Statuses"
+          ]
+        },
+        "StatusParams": {
+          "type": "object",
+          "properties": {
+            "Patterns": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Patterns"
+          ]
+        },
+        "Tools": {
+          "type": "object",
+          "properties": {
+            "sha256": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "version",
+            "url",
+            "size"
+          ]
+        },
+        "URL": {
+          "type": "object",
+          "properties": {
+            "Channel": {
+              "type": "string"
+            },
+            "Name": {
+              "type": "string"
+            },
+            "Revision": {
+              "type": "integer"
+            },
+            "Schema": {
+              "type": "string"
+            },
+            "Series": {
+              "type": "string"
+            },
+            "User": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Schema",
+            "User",
+            "Name",
+            "Revision",
+            "Series",
+            "Channel"
+          ]
+        },
+        "UnitStatus": {
+          "type": "object",
+          "properties": {
+            "AgentStatus": {
+              "$ref": "#/definitions/DetailedStatus"
+            },
+            "Charm": {
+              "type": "string"
+            },
+            "Machine": {
+              "type": "string"
+            },
+            "OpenedPorts": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "PublicAddress": {
+              "type": "string"
+            },
+            "Subordinates": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitStatus"
+                }
+              }
+            },
+            "WorkloadStatus": {
+              "$ref": "#/definitions/DetailedStatus"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "AgentStatus",
+            "WorkloadStatus",
+            "Machine",
+            "OpenedPorts",
+            "PublicAddress",
+            "Charm",
+            "Subordinates"
+          ]
+        },
+        "Value": {
+          "type": "object",
+          "properties": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/AddMachinesResults"
-            }
-          }
-        },
-        "ModelGet": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResults"
-            }
-          }
-        },
-        "ModelInfo": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelInfo"
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "ModelSet": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelSet"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "location",
+            "caveatId",
+            "verificationId"
+          ]
         },
-        "ModelUnset": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelUnset"
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
-          }
-        },
-        "ModelUserInfo": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "start",
+            "totalLen",
+            "headerLen"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Controller",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AllModels": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/ModelUserInfoResults"
+              "$ref": "#/definitions/UserModelList"
             }
           }
         },
-        "PrivateAddress": {
+        "DestroyController": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/PrivateAddress"
-            },
-            "Result": {
-              "$ref": "#/definitions/PrivateAddressResults"
+              "$ref": "#/definitions/DestroyControllerArgs"
             }
           }
         },
-        "ProvisioningScript": {
+        "InitiateModelMigration": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ProvisioningScriptParams"
+              "$ref": "#/definitions/InitiateModelMigrationArgs"
             },
             "Result": {
-              "$ref": "#/definitions/ProvisioningScriptResult"
+              "$ref": "#/definitions/InitiateModelMigrationResults"
             }
           }
         },
-        "PublicAddress": {
+        "ListBlockedModels": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/PublicAddress"
-            },
             "Result": {
-              "$ref": "#/definitions/PublicAddressResults"
+              "$ref": "#/definitions/ModelBlockInfoList"
             }
           }
         },
-        "ResolveCharms": {
+        "ModelConfig": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ResolveCharms"
-            },
             "Result": {
-              "$ref": "#/definitions/ResolveCharmResults"
-            }
-          }
-        },
-        "Resolved": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Resolved"
+              "$ref": "#/definitions/ModelConfigResults"
             }
           }
         },
-        "RetryProvisioning": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetModelAgentVersion": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetModelAgentVersion"
-            }
-          }
-        },
-        "SetModelConstraints": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetConstraints"
+              "$ref": "#/definitions/ModelStatusResults"
             }
           }
         },
-        "StatusHistory": {
+        "RemoveBlocks": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/StatusHistoryRequests"
-            },
-            "Result": {
-              "$ref": "#/definitions/StatusHistoryResults"
+              "$ref": "#/definitions/RemoveBlocksArgs"
             }
           }
         },
-        "WatchAll": {
+        "WatchAllModels": {
           "type": "object",
           "properties": {
             "Result": {
         }
       },
       "definitions": {
-        "APIHostPortsResult": {
+        "AllWatcherId": {
           "type": "object",
           "properties": {
-            "Servers": {
-              "type": "array",
-              "items": {
-                "type": "array",
-                "items": {
-                  "$ref": "#/definitions/HostPort"
-                }
-              }
+            "AllWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Servers"
+            "AllWatcherId"
           ]
         },
-        "AddCharm": {
+        "DestroyControllerArgs": {
           "type": "object",
           "properties": {
-            "Channel": {
-              "type": "string"
-            },
-            "URL": {
-              "type": "string"
+            "destroy-models": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "URL",
-            "Channel"
+            "destroy-models"
           ]
         },
-        "AddCharmWithAuthorization": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "Channel": {
-              "type": "string"
-            },
-            "CharmStoreMacaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "URL": {
-              "type": "string"
+            "Entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "URL",
-            "Channel",
-            "CharmStoreMacaroon"
+            "Entities"
           ]
         },
-        "AddMachineParams": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Addrs": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Address"
-              }
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "ContainerType": {
-              "type": "string"
-            },
-            "Disks": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Constraints"
-              }
-            },
-            "HardwareCharacteristics": {
-              "$ref": "#/definitions/HardwareCharacteristics"
-            },
-            "InstanceId": {
-              "type": "string"
-            },
-            "Jobs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "Nonce": {
-              "type": "string"
-            },
-            "ParentId": {
-              "type": "string"
-            },
-            "Placement": {
-              "$ref": "#/definitions/Placement"
-            },
-            "Series": {
+            "Tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Series",
-            "Constraints",
-            "Jobs",
-            "Disks",
-            "Placement",
-            "ParentId",
-            "ContainerType",
-            "InstanceId",
-            "Nonce",
-            "HardwareCharacteristics",
-            "Addrs"
+            "Tag"
           ]
         },
-        "AddMachines": {
+        "Error": {
           "type": "object",
-          "properties": {
-            "MachineParams": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/AddMachineParams"
-              }
+          "properties": {
+            "Code": {
+              "type": "string"
+            },
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineParams"
+            "Message",
+            "Code"
           ]
         },
-        "AddMachinesResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Machine": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Machine",
-            "Error"
-          ]
+          "additionalProperties": false
         },
-        "AddMachinesResults": {
+        "InitiateModelMigrationArgs": {
           "type": "object",
           "properties": {
-            "Machines": {
+            "specs": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/AddMachinesResult"
+                "$ref": "#/definitions/ModelMigrationSpec"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Machines"
+            "specs"
           ]
         },
-        "Address": {
+        "InitiateModelMigrationResult": {
           "type": "object",
           "properties": {
-            "Scope": {
-              "type": "string"
-            },
-            "SpaceName": {
-              "type": "string"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "Type": {
+            "id": {
               "type": "string"
             },
-            "Value": {
+            "model-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope"
-          ]
-        },
-        "AgentVersionResult": {
-          "type": "object",
-          "properties": {
-            "Version": {
-              "$ref": "#/definitions/Number"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Version"
+            "model-tag",
+            "error",
+            "id"
           ]
         },
-        "AllWatcherId": {
+        "InitiateModelMigrationResults": {
           "type": "object",
           "properties": {
-            "AllWatcherId": {
-              "type": "string"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InitiateModelMigrationResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "AllWatcherId"
+            "results"
           ]
         },
-        "ApplicationStatus": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "CanUpgradeTo": {
-              "type": "string"
-            },
-            "Charm": {
-              "type": "string"
-            },
-            "Err": {
-              "type": "object",
-              "additionalProperties": true
-            },
-            "Exposed": {
-              "type": "boolean"
-            },
-            "Life": {
-              "type": "string"
-            },
-            "MeterStatuses": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/MeterStatus"
-                }
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
               }
             },
-            "Relations": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
-                }
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             },
-            "Status": {
-              "$ref": "#/definitions/DetailedStatus"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "SubordinateTo": {
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
               "type": "array",
               "items": {
-                "type": "string"
-              }
-            },
-            "Units": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/UnitStatus"
-                }
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Err",
-            "Charm",
-            "Exposed",
-            "Life",
-            "Relations",
-            "CanUpgradeTo",
-            "SubordinateTo",
-            "Units",
-            "MeterStatuses",
-            "Status"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "Binary": {
+        "Model": {
           "type": "object",
           "properties": {
-            "Arch": {
+            "Name": {
               "type": "string"
             },
-            "Number": {
-              "$ref": "#/definitions/Number"
+            "OwnerTag": {
+              "type": "string"
             },
-            "Series": {
+            "UUID": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Number",
-            "Series",
-            "Arch"
+            "Name",
+            "UUID",
+            "OwnerTag"
           ]
         },
-        "BundleChangesChange": {
+        "ModelBlockInfo": {
           "type": "object",
           "properties": {
-            "args": {
+            "blocks": {
               "type": "array",
               "items": {
-                "type": "object",
-                "additionalProperties": true
+                "type": "string"
               }
             },
-            "id": {
+            "model-uuid": {
               "type": "string"
             },
-            "method": {
+            "name": {
               "type": "string"
             },
-            "requires": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "owner-tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "id",
-            "method",
-            "args",
-            "requires"
+            "name",
+            "model-uuid",
+            "owner-tag",
+            "blocks"
           ]
         },
-        "CharmInfo": {
+        "ModelBlockInfoList": {
           "type": "object",
           "properties": {
-            "CharmURL": {
-              "type": "string"
+            "models": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelBlockInfo"
+              }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "CharmURL"
-          ]
+          "additionalProperties": false
         },
-        "Constraints": {
+        "ModelConfigResults": {
           "type": "object",
           "properties": {
-            "Count": {
-              "type": "integer"
-            },
-            "Pool": {
-              "type": "string"
-            },
-            "Size": {
-              "type": "integer"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Pool",
-            "Size",
-            "Count"
+            "Config"
           ]
         },
-        "DestroyMachines": {
+        "ModelMigrationSpec": {
           "type": "object",
           "properties": {
-            "Force": {
-              "type": "boolean"
+            "model-tag": {
+              "type": "string"
             },
-            "MachineNames": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "target-info": {
+              "$ref": "#/definitions/ModelMigrationTargetInfo"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineNames",
-            "Force"
+            "model-tag",
+            "target-info"
           ]
         },
-        "DetailedStatus": {
+        "ModelMigrationTargetInfo": {
           "type": "object",
           "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
               }
             },
-            "Err": {
-              "type": "object",
-              "additionalProperties": true
-            },
-            "Info": {
-              "type": "string"
-            },
-            "Kind": {
+            "auth-tag": {
               "type": "string"
             },
-            "Life": {
+            "ca-cert": {
               "type": "string"
             },
-            "Since": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Status": {
+            "controller-tag": {
               "type": "string"
             },
-            "Version": {
+            "password": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Status",
-            "Info",
-            "Data",
-            "Since",
-            "Kind",
-            "Version",
-            "Life",
-            "Err"
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag",
+            "password"
           ]
         },
-        "EndpointStatus": {
+        "ModelStatus": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
+            "hosted-machine-count": {
+              "type": "integer"
+            },
+            "life": {
               "type": "string"
             },
-            "Name": {
+            "model-tag": {
               "type": "string"
             },
-            "Role": {
+            "owner-tag": {
               "type": "string"
             },
-            "Subordinate": {
-              "type": "boolean"
+            "service-count": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "Name",
-            "Role",
-            "Subordinate"
+            "model-tag",
+            "life",
+            "hosted-machine-count",
+            "service-count",
+            "owner-tag"
           ]
         },
-        "Entities": {
+        "ModelStatusResults": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "models": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/ModelStatus"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "models"
           ]
         },
-        "Entity": {
+        "RemoveBlocksArgs": {
           "type": "object",
           "properties": {
-            "Tag": {
-              "type": "string"
+            "all": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "all"
           ]
         },
-        "EntityStatus": {
+        "UserModel": {
           "type": "object",
           "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Info": {
-              "type": "string"
-            },
-            "Since": {
+            "LastConnection": {
               "type": "string",
               "format": "date-time"
             },
-            "Status": {
-              "type": "string"
+            "Model": {
+              "$ref": "#/definitions/Model"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Status",
-            "Info",
-            "Data",
-            "Since"
+            "Model",
+            "LastConnection"
           ]
         },
-        "Error": {
+        "UserModelList": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "Message": {
-              "type": "string"
+            "UserModels": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserModel"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "UserModels"
           ]
         },
-        "ErrorInfo": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "MacaroonPath": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "location",
+            "caveatId",
+            "verificationId"
+          ]
         },
-        "ErrorResult": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Deployer",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
         },
-        "ErrorResults": {
+        "APIHostPorts": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          }
         },
-        "FindToolsParams": {
+        "CACert": {
           "type": "object",
           "properties": {
-            "Arch": {
-              "type": "string"
-            },
-            "MajorVersion": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "ConnectionInfo": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/DeployerConnectionValues"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "MinorVersion": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "Remove": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "Number": {
-              "$ref": "#/definitions/Number"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetPasswords": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
             },
-            "Series": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "StateAddresses": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
+            }
+          }
+        },
+        "WatchAPIHostPorts": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Number",
-            "MajorVersion",
-            "MinorVersion",
-            "Arch",
-            "Series"
-          ]
+          }
         },
-        "FindToolsResult": {
+        "WatchUnits": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "List": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "Servers": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Tools"
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "List",
-            "Error"
+            "Servers"
           ]
         },
-        "FullStatus": {
+        "Address": {
           "type": "object",
           "properties": {
-            "Applications": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/ApplicationStatus"
-                }
-              }
-            },
-            "AvailableVersion": {
+            "Scope": {
               "type": "string"
             },
-            "Machines": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/MachineStatus"
-                }
-              }
+            "SpaceName": {
+              "type": "string"
             },
-            "ModelName": {
+            "Type": {
               "type": "string"
             },
-            "Relations": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RelationStatus"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ModelName",
-            "AvailableVersion",
-            "Machines",
-            "Applications",
-            "Relations"
-          ]
-        },
-        "GetBundleChangesParams": {
-          "type": "object",
-          "properties": {
-            "yaml": {
+            "Value": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "yaml"
+            "Value",
+            "Type",
+            "Scope"
           ]
         },
-        "GetBundleChangesResults": {
+        "BytesResult": {
           "type": "object",
           "properties": {
-            "changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BundleChangesChange"
-              }
-            },
-            "errors": {
+            "Result": {
               "type": "array",
               "items": {
-                "type": "string"
+                "type": "integer"
               }
             }
           },
-          "additionalProperties": false
-        },
-        "GetConstraintsResults": {
-          "type": "object",
-          "properties": {
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "Constraints"
+            "Result"
           ]
         },
-        "HardwareCharacteristics": {
+        "DeployerConnectionValues": {
           "type": "object",
           "properties": {
-            "Arch": {
-              "type": "string"
-            },
-            "AvailabilityZone": {
-              "type": "string"
-            },
-            "CpuCores": {
-              "type": "integer"
-            },
-            "CpuPower": {
-              "type": "integer"
-            },
-            "Mem": {
-              "type": "integer"
-            },
-            "RootDisk": {
-              "type": "integer"
-            },
-            "Tags": {
+            "APIAddresses": {
               "type": "array",
               "items": {
                 "type": "string"
               }
-            }
-          },
-          "additionalProperties": false
-        },
-        "History": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
             },
-            "Statuses": {
+            "StateAddresses": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/DetailedStatus"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Statuses"
-          ]
-        },
-        "HostPort": {
-          "type": "object",
-          "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
-            },
-            "Port": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Address",
-            "Port"
+            "StateAddresses",
+            "APIAddresses"
           ]
         },
-        "Macaroon": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            "Entities": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Entities"
           ]
         },
-        "MachineStatus": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "AgentStatus": {
-              "$ref": "#/definitions/DetailedStatus"
-            },
-            "Containers": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/MachineStatus"
-                }
-              }
-            },
-            "DNSName": {
-              "type": "string"
-            },
-            "Hardware": {
-              "type": "string"
-            },
-            "HasVote": {
-              "type": "boolean"
-            },
-            "Id": {
-              "type": "string"
-            },
-            "InstanceId": {
-              "type": "string"
-            },
-            "InstanceStatus": {
-              "$ref": "#/definitions/DetailedStatus"
-            },
-            "Jobs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "Series": {
+            "Tag": {
               "type": "string"
-            },
-            "WantsVote": {
-              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "AgentStatus",
-            "InstanceStatus",
-            "DNSName",
-            "InstanceId",
-            "Series",
-            "Id",
-            "Containers",
-            "Hardware",
-            "Jobs",
-            "HasVote",
-            "WantsVote"
+            "Tag"
           ]
         },
-        "MeterStatus": {
+        "EntityPassword": {
           "type": "object",
           "properties": {
-            "Color": {
+            "Password": {
               "type": "string"
             },
-            "Message": {
+            "Tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Color",
-            "Message"
+            "Tag",
+            "Password"
           ]
         },
-        "ModelConfigResults": {
+        "EntityPasswords": {
           "type": "object",
           "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
+            "Changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "Changes"
           ]
         },
-        "ModelInfo": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Cloud": {
-              "type": "string"
-            },
-            "DefaultSeries": {
-              "type": "string"
-            },
-            "Life": {
-              "type": "string"
-            },
-            "Name": {
-              "type": "string"
-            },
-            "OwnerTag": {
-              "type": "string"
-            },
-            "ProviderType": {
-              "type": "string"
-            },
-            "ServerUUID": {
+            "Code": {
               "type": "string"
             },
-            "Status": {
-              "$ref": "#/definitions/EntityStatus"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "UUID": {
+            "Message": {
               "type": "string"
-            },
-            "Users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUserInfo"
-              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Name",
-            "UUID",
-            "ServerUUID",
-            "ProviderType",
-            "DefaultSeries",
-            "Cloud",
-            "OwnerTag",
-            "Life",
-            "Status",
-            "Users"
+            "Message",
+            "Code"
           ]
         },
-        "ModelSet": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "Error"
           ]
         },
-        "ModelUnset": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Keys": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Keys"
+            "Results"
           ]
         },
-        "ModelUserInfo": {
+        "HostPort": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "displayname": {
-              "type": "string"
-            },
-            "lastconnection": {
-              "type": "string",
-              "format": "date-time"
+            "Address": {
+              "$ref": "#/definitions/Address"
             },
-            "user": {
-              "type": "string"
+            "Port": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user",
-            "displayname",
-            "lastconnection",
-            "access"
+            "Address",
+            "Port"
           ]
         },
-        "ModelUserInfoResult": {
+        "LifeResult": {
           "type": "object",
           "properties": {
-            "error": {
+            "Error": {
               "$ref": "#/definitions/Error"
             },
-            "result": {
-              "$ref": "#/definitions/ModelUserInfo"
+            "Life": {
+              "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Life",
+            "Error"
+          ]
         },
-        "ModelUserInfoResults": {
+        "LifeResults": {
           "type": "object",
           "properties": {
-            "results": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelUserInfoResult"
+                "$ref": "#/definitions/LifeResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "Results"
           ]
         },
-        "Number": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Build": {
-              "type": "integer"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "Major": {
-              "type": "integer"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "Minor": {
-              "type": "integer"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Patch": {
-              "type": "integer"
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Tag": {
-              "type": "string"
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Major",
-            "Minor",
-            "Tag",
-            "Patch",
-            "Build"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "Placement": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "Directive": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Scope": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Scope",
-            "Directive"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "PrivateAddress": {
+        "StringResult": {
           "type": "object",
           "properties": {
-            "Target": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Result": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Target"
+            "Error",
+            "Result"
           ]
         },
-        "PrivateAddressResults": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "PrivateAddress": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "PrivateAddress"
+            "Error",
+            "Result"
           ]
         },
-        "ProvisioningScriptParams": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
-            "DataDir": {
-              "type": "string"
-            },
-            "DisablePackageCommands": {
-              "type": "boolean"
+            "Changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "MachineId": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Nonce": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "MachineId",
-            "Nonce",
-            "DataDir",
-            "DisablePackageCommands"
-          ]
-        },
-        "ProvisioningScriptResult": {
-          "type": "object",
-          "properties": {
-            "Script": {
+            "StringsWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Script"
+            "StringsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "PublicAddress": {
+        "StringsWatchResults": {
           "type": "object",
           "properties": {
-            "Target": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Target"
+            "Results"
           ]
         },
-        "PublicAddressResults": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "PublicAddress": {
-              "type": "string"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "PublicAddress"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "RelationStatus": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Endpoints": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EndpointStatus"
-              }
-            },
-            "Id": {
+            "headerLen": {
               "type": "integer"
             },
-            "Interface": {
-              "type": "string"
-            },
-            "Key": {
-              "type": "string"
+            "start": {
+              "type": "integer"
             },
-            "Scope": {
-              "type": "string"
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Id",
-            "Key",
-            "Interface",
-            "Scope",
-            "Endpoints"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "DiscoverSpaces",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddSubnetsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
         },
-        "ResolveCharmResult": {
+        "CreateSpaces": {
           "type": "object",
           "properties": {
-            "Error": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/CreateSpacesParams"
             },
-            "URL": {
-              "$ref": "#/definitions/URL"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false
+          }
         },
-        "ResolveCharmResults": {
+        "ListSpaces": {
           "type": "object",
           "properties": {
-            "URLs": {
+            "Result": {
+              "$ref": "#/definitions/DiscoverSpacesResults"
+            }
+          }
+        },
+        "ListSubnets": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SubnetsFilters"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListSubnetsResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "AddSubnetParams": {
+          "type": "object",
+          "properties": {
+            "SpaceTag": {
+              "type": "string"
+            },
+            "SubnetProviderId": {
+              "type": "string"
+            },
+            "SubnetTag": {
+              "type": "string"
+            },
+            "Zones": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ResolveCharmResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "URLs"
+            "SpaceTag"
           ]
         },
-        "ResolveCharms": {
+        "AddSubnetsParams": {
           "type": "object",
           "properties": {
-            "References": {
+            "Subnets": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/URL"
+                "$ref": "#/definitions/AddSubnetParams"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "References"
+            "Subnets"
           ]
         },
-        "Resolved": {
+        "CreateSpaceParams": {
           "type": "object",
           "properties": {
-            "Retry": {
+            "ProviderId": {
+              "type": "string"
+            },
+            "Public": {
               "type": "boolean"
             },
-            "UnitName": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "UnitName",
-            "Retry"
-          ]
-        },
-        "SetConstraints": {
-          "type": "object",
-          "properties": {
-            "ApplicationName": {
+            "SpaceTag": {
               "type": "string"
             },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
+            "SubnetTags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
-            "Constraints"
+            "SubnetTags",
+            "SpaceTag",
+            "Public"
           ]
         },
-        "SetModelAgentVersion": {
+        "CreateSpacesParams": {
           "type": "object",
           "properties": {
-            "Version": {
-              "$ref": "#/definitions/Number"
+            "Spaces": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CreateSpaceParams"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Version"
+            "Spaces"
           ]
         },
-        "StatusHistoryFilter": {
+        "DiscoverSpacesResults": {
           "type": "object",
           "properties": {
-            "Date": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Delta": {
-              "type": "integer"
-            },
-            "Size": {
-              "type": "integer"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProviderSpace"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Size",
-            "Date",
-            "Delta"
+            "Results"
           ]
         },
-        "StatusHistoryRequest": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Filter": {
-              "$ref": "#/definitions/StatusHistoryFilter"
-            },
-            "HistoryKind": {
+            "Code": {
               "type": "string"
             },
-            "Size": {
-              "type": "integer"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "Tag": {
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "HistoryKind",
-            "Size",
-            "Filter",
-            "Tag"
+            "Message",
+            "Code"
           ]
         },
-        "StatusHistoryRequests": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Requests": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StatusHistoryRequest"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Requests"
-          ]
+          "additionalProperties": false
         },
-        "StatusHistoryResult": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
-            },
-            "History": {
-              "$ref": "#/definitions/History"
             }
           },
           "additionalProperties": false,
           "required": [
-            "History"
+            "Error"
           ]
         },
-        "StatusHistoryResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StatusHistoryResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
             "Results"
           ]
         },
-        "StatusParams": {
+        "ListSubnetsResults": {
           "type": "object",
           "properties": {
-            "Patterns": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Subnet"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Patterns"
+            "Results"
           ]
         },
-        "Tools": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "sha256": {
-              "type": "string"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "size": {
-              "type": "integer"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "url": {
-              "type": "string"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "version": {
-              "$ref": "#/definitions/Binary"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "version",
-            "url",
-            "size"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "URL": {
+        "ModelConfigResult": {
           "type": "object",
           "properties": {
-            "Channel": {
-              "type": "string"
-            },
-            "Name": {
-              "type": "string"
-            },
-            "Revision": {
-              "type": "integer"
-            },
-            "Schema": {
-              "type": "string"
-            },
-            "Series": {
-              "type": "string"
-            },
-            "User": {
-              "type": "string"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Schema",
-            "User",
-            "Name",
-            "Revision",
-            "Series",
-            "Channel"
+            "Config"
           ]
         },
-        "UnitStatus": {
+        "ProviderSpace": {
           "type": "object",
           "properties": {
-            "AgentStatus": {
-              "$ref": "#/definitions/DetailedStatus"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Charm": {
+            "Name": {
               "type": "string"
             },
-            "Machine": {
+            "ProviderId": {
               "type": "string"
             },
-            "OpenedPorts": {
+            "Subnets": {
               "type": "array",
               "items": {
-                "type": "string"
-              }
-            },
-            "PublicAddress": {
-              "type": "string"
-            },
-            "Subordinates": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/UnitStatus"
-                }
+                "$ref": "#/definitions/Subnet"
               }
-            },
-            "WorkloadStatus": {
-              "$ref": "#/definitions/DetailedStatus"
             }
           },
           "additionalProperties": false,
           "required": [
-            "AgentStatus",
-            "WorkloadStatus",
-            "Machine",
-            "OpenedPorts",
-            "PublicAddress",
-            "Charm",
-            "Subordinates"
+            "Name",
+            "ProviderId",
+            "Subnets"
           ]
         },
-        "Value": {
+        "Subnet": {
           "type": "object",
           "properties": {
-            "arch": {
+            "CIDR": {
               "type": "string"
             },
-            "container": {
+            "Life": {
               "type": "string"
             },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "instance-type": {
+            "ProviderId": {
               "type": "string"
             },
-            "mem": {
-              "type": "integer"
+            "SpaceTag": {
+              "type": "string"
             },
-            "root-disk": {
-              "type": "integer"
+            "StaticRangeHighIP": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "spaces": {
+            "StaticRangeLowIP": {
               "type": "array",
               "items": {
-                "type": "string"
+                "type": "integer"
               }
             },
-            "tags": {
+            "Status": {
+              "type": "string"
+            },
+            "VLANTag": {
+              "type": "integer"
+            },
+            "Zones": {
               "type": "array",
               "items": {
                 "type": "string"
               }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "CIDR",
+            "VLANTag",
+            "Life",
+            "SpaceTag",
+            "Zones"
+          ]
+        },
+        "SubnetsFilters": {
+          "type": "object",
+          "properties": {
+            "SpaceTag": {
+              "type": "string"
             },
-            "virt-type": {
+            "Zone": {
               "type": "string"
             }
           },
     }
   },
   {
-    "Name": "Controller",
-    "Version": 3,
+    "Name": "DiskManager",
+    "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "AllModels": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/UserModelList"
-            }
-          }
-        },
-        "DestroyController": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/DestroyControllerArgs"
-            }
-          }
-        },
-        "InitiateModelMigration": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/InitiateModelMigrationArgs"
-            },
-            "Result": {
-              "$ref": "#/definitions/InitiateModelMigrationResults"
-            }
-          }
-        },
-        "ListBlockedModels": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelBlockInfoList"
-            }
-          }
-        },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResults"
-            }
-          }
-        },
-        "ModelStatus": {
+        "SetMachineBlockDevices": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/SetMachineBlockDevices"
             },
             "Result": {
-              "$ref": "#/definitions/ModelStatusResults"
-            }
-          }
-        },
-        "RemoveBlocks": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/RemoveBlocksArgs"
-            }
-          }
-        },
-        "WatchAllModels": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/AllWatcherId"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         }
       },
       "definitions": {
-        "AllWatcherId": {
+        "BlockDevice": {
           "type": "object",
           "properties": {
-            "AllWatcherId": {
+            "BusAddress": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "AllWatcherId"
-          ]
-        },
-        "DestroyControllerArgs": {
-          "type": "object",
-          "properties": {
-            "destroy-models": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "destroy-models"
-          ]
-        },
-        "Entities": {
-          "type": "object",
-          "properties": {
-            "Entities": {
+            },
+            "DeviceLinks": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "type": "string"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities"
-          ]
-        },
-        "Entity": {
-          "type": "object",
-          "properties": {
-            "Tag": {
+            },
+            "DeviceName": {
+              "type": "string"
+            },
+            "FilesystemType": {
+              "type": "string"
+            },
+            "HardwareId": {
+              "type": "string"
+            },
+            "InUse": {
+              "type": "boolean"
+            },
+            "Label": {
+              "type": "string"
+            },
+            "MountPoint": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            },
+            "UUID": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "DeviceName",
+            "DeviceLinks",
+            "Label",
+            "UUID",
+            "HardwareId",
+            "BusAddress",
+            "Size",
+            "FilesystemType",
+            "InUse",
+            "MountPoint"
           ]
         },
         "Error": {
           },
           "additionalProperties": false
         },
-        "InitiateModelMigrationArgs": {
-          "type": "object",
-          "properties": {
-            "specs": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelMigrationSpec"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "specs"
-          ]
-        },
-        "InitiateModelMigrationResult": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "error": {
+            "Error": {
               "$ref": "#/definitions/Error"
-            },
-            "id": {
-              "type": "string"
-            },
-            "model-tag": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "model-tag",
-            "error",
-            "id"
+            "Error"
           ]
         },
-        "InitiateModelMigrationResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "results": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/InitiateModelMigrationResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "Results"
           ]
         },
         "Macaroon": {
             "sig"
           ]
         },
-        "Model": {
-          "type": "object",
-          "properties": {
-            "Name": {
-              "type": "string"
-            },
-            "OwnerTag": {
-              "type": "string"
-            },
-            "UUID": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Name",
-            "UUID",
-            "OwnerTag"
-          ]
-        },
-        "ModelBlockInfo": {
-          "type": "object",
-          "properties": {
-            "blocks": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "model-uuid": {
-              "type": "string"
-            },
-            "name": {
-              "type": "string"
-            },
-            "owner-tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "name",
-            "model-uuid",
-            "owner-tag",
-            "blocks"
-          ]
-        },
-        "ModelBlockInfoList": {
-          "type": "object",
-          "properties": {
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelBlockInfo"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "ModelConfigResults": {
-          "type": "object",
-          "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Config"
-          ]
-        },
-        "ModelMigrationSpec": {
-          "type": "object",
-          "properties": {
-            "model-tag": {
-              "type": "string"
-            },
-            "target-info": {
-              "$ref": "#/definitions/ModelMigrationTargetInfo"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag",
-            "target-info"
-          ]
-        },
-        "ModelMigrationTargetInfo": {
+        "MachineBlockDevices": {
           "type": "object",
           "properties": {
-            "addrs": {
+            "blockdevices": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/BlockDevice"
               }
             },
-            "auth-tag": {
-              "type": "string"
-            },
-            "ca-cert": {
-              "type": "string"
-            },
-            "controller-tag": {
-              "type": "string"
-            },
-            "password": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "controller-tag",
-            "addrs",
-            "ca-cert",
-            "auth-tag",
-            "password"
-          ]
-        },
-        "ModelStatus": {
-          "type": "object",
-          "properties": {
-            "application-count": {
-              "type": "integer"
-            },
-            "hosted-machine-count": {
-              "type": "integer"
-            },
-            "life": {
-              "type": "string"
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "owner-tag": {
+            "machine": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "model-tag",
-            "life",
-            "hosted-machine-count",
-            "application-count",
-            "owner-tag"
-          ]
-        },
-        "ModelStatusResults": {
-          "type": "object",
-          "properties": {
-            "models": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelStatus"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "models"
-          ]
-        },
-        "RemoveBlocksArgs": {
-          "type": "object",
-          "properties": {
-            "all": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "all"
-          ]
-        },
-        "UserModel": {
-          "type": "object",
-          "properties": {
-            "LastConnection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Model": {
-              "$ref": "#/definitions/Model"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Model",
-            "LastConnection"
+            "machine"
           ]
         },
-        "UserModelList": {
+        "SetMachineBlockDevices": {
           "type": "object",
           "properties": {
-            "UserModels": {
+            "machineblockdevices": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/UserModel"
+                "$ref": "#/definitions/MachineBlockDevices"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "UserModels"
+            "machineblockdevices"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "Deployer",
-    "Version": 1,
+    "Name": "EntityWatcher",
+    "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "CACert": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/BytesResult"
-            }
-          }
-        },
-        "ConnectionInfo": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/DeployerConnectionValues"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ModelUUID": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
-            }
-          }
-        },
-        "Remove": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetPasswords": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntityPasswords"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "StateAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "WatchAPIHostPorts": {
+        "Next": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+              "$ref": "#/definitions/EntitiesWatchResult"
             }
           }
         },
-        "WatchUnits": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
+        "Stop": {
+          "type": "object"
         }
       },
       "definitions": {
-        "APIHostPortsResult": {
+        "EntitiesWatchResult": {
           "type": "object",
           "properties": {
-            "Servers": {
+            "Changes": {
               "type": "array",
               "items": {
-                "type": "array",
-                "items": {
-                  "$ref": "#/definitions/HostPort"
-                }
+                "type": "string"
               }
+            },
+            "EntityWatcherId": {
+              "type": "string"
+            },
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Servers"
+            "EntityWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "Address": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Scope": {
-              "type": "string"
-            },
-            "SpaceName": {
+            "Code": {
               "type": "string"
             },
-            "Type": {
-              "type": "string"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "Value": {
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope"
-          ]
-        },
-        "BytesResult": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Result"
+            "Message",
+            "Code"
           ]
         },
-        "DeployerConnectionValues": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "APIAddresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "StateAddresses": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "StateAddresses",
-            "APIAddresses"
-          ]
+          "additionalProperties": false
         },
-        "Entities": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/caveat"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities"
-          ]
-        },
-        "Entity": {
-          "type": "object",
-          "properties": {
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
-        },
-        "EntityPassword": {
-          "type": "object",
-          "properties": {
-            "Password": {
-              "type": "string"
             },
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Password"
-          ]
-        },
-        "EntityPasswords": {
-          "type": "object",
-          "properties": {
-            "Changes": {
+            "data": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityPassword"
+                "type": "integer"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Changes"
-          ]
-        },
-        "Error": {
-          "type": "object",
-          "properties": {
-            "Code": {
-              "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Message": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "ErrorInfo": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "MacaroonPath": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "ErrorResults": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "HostPort": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "FilesystemAttachmentsWatcher",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
           "type": "object",
           "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
-            },
-            "Port": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/MachineStorageIdsWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Address",
-            "Port"
-          ]
+          }
         },
-        "LifeResult": {
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Code": {
+              "type": "string"
             },
-            "Life": {
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Life",
-            "Error"
+            "Message",
+            "Code"
           ]
         },
-        "LifeResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LifeResult"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          "additionalProperties": false
         },
         "Macaroon": {
           "type": "object",
             "sig"
           ]
         },
-        "NotifyWatchResult": {
+        "MachineStorageId": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "attachmenttag": {
+              "type": "string"
             },
-            "NotifyWatcherId": {
+            "machinetag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "machinetag",
+            "attachmenttag"
           ]
         },
-        "StringResult": {
+        "MachineStorageIdsWatchResult": {
           "type": "object",
           "properties": {
+            "Changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineStorageId"
+              }
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
+            "MachineStorageIdsWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "MachineStorageIdsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "StringsResult": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "Result": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "StringsWatchResult": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "headerLen": {
+              "type": "integer"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "start": {
+              "type": "integer"
             },
-            "StringsWatcherId": {
-              "type": "string"
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Firewaller",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "GetAssignedMachine": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
         },
-        "StringsWatchResults": {
+        "GetExposed": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StringsWatchResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/BoolResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          }
         },
-        "caveat": {
+        "GetMachineActiveSubnets": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
+        },
+        "GetMachinePorts": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MachinePortsParams"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Result": {
+              "$ref": "#/definitions/MachinePortsResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
+          }
         },
-        "packet": {
+        "InstanceId": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "totalLen": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/StringResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "DiscoverSpaces",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AddSubnets": {
+          }
+        },
+        "Life": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/AddSubnetsParams"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/LifeResults"
             }
           }
         },
-        "CreateSpaces": {
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "Watch": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/CreateSpacesParams"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/NotifyWatchResults"
             }
           }
         },
-        "ListSpaces": {
+        "WatchForModelConfigChanges": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/DiscoverSpacesResults"
+              "$ref": "#/definitions/NotifyWatchResult"
             }
           }
         },
-        "ListSubnets": {
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        },
+        "WatchOpenedPorts": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/SubnetsFilters"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ListSubnetsResults"
+              "$ref": "#/definitions/StringsWatchResults"
             }
           }
         },
-        "ModelConfig": {
+        "WatchUnits": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
             "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
+              "$ref": "#/definitions/StringsWatchResults"
             }
           }
         }
       },
       "definitions": {
-        "AddSubnetParams": {
+        "BoolResult": {
           "type": "object",
           "properties": {
-            "SpaceTag": {
-              "type": "string"
-            },
-            "SubnetProviderId": {
-              "type": "string"
-            },
-            "SubnetTag": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Zones": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "SpaceTag"
-          ]
-        },
-        "AddSubnetsParams": {
-          "type": "object",
-          "properties": {
-            "Subnets": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/AddSubnetParams"
-              }
+            "Result": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Subnets"
+            "Error",
+            "Result"
           ]
         },
-        "CreateSpaceParams": {
+        "BoolResults": {
           "type": "object",
           "properties": {
-            "ProviderId": {
-              "type": "string"
-            },
-            "Public": {
-              "type": "boolean"
-            },
-            "SpaceTag": {
-              "type": "string"
-            },
-            "SubnetTags": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/BoolResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "SubnetTags",
-            "SpaceTag",
-            "Public"
+            "Results"
           ]
         },
-        "CreateSpacesParams": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "Spaces": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CreateSpaceParams"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Spaces"
+            "Entities"
           ]
         },
-        "DiscoverSpacesResults": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ProviderSpace"
-              }
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Tag"
           ]
         },
         "Error": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
+        "LifeResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "ListSubnetsResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Subnet"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "Macaroon": {
-          "type": "object",
-          "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
-        },
-        "ModelConfigResult": {
-          "type": "object",
-          "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "Life": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "Life",
+            "Error"
           ]
         },
-        "ProviderSpace": {
+        "LifeResults": {
           "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Name": {
-              "type": "string"
-            },
-            "ProviderId": {
-              "type": "string"
-            },
-            "Subnets": {
+          "properties": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Subnet"
+                "$ref": "#/definitions/LifeResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Name",
-            "ProviderId",
-            "Subnets"
+            "Results"
           ]
         },
-        "Subnet": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "CIDR": {
-              "type": "string"
-            },
-            "Life": {
-              "type": "string"
-            },
-            "ProviderId": {
-              "type": "string"
-            },
-            "SpaceTag": {
-              "type": "string"
-            },
-            "StaticRangeHighIP": {
+            "caveats": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/caveat"
               }
             },
-            "StaticRangeLowIP": {
+            "data": {
               "type": "array",
               "items": {
                 "type": "integer"
               }
             },
-            "Status": {
-              "type": "string"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "VLANTag": {
-              "type": "integer"
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Zones": {
+            "sig": {
               "type": "array",
               "items": {
-                "type": "string"
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "CIDR",
-            "VLANTag",
-            "Life",
-            "SpaceTag",
-            "Zones"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "SubnetsFilters": {
+        "MachinePortRange": {
           "type": "object",
           "properties": {
-            "SpaceTag": {
+            "PortRange": {
+              "$ref": "#/definitions/PortRange"
+            },
+            "RelationTag": {
               "type": "string"
             },
-            "Zone": {
+            "UnitTag": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "UnitTag",
+            "RelationTag",
+            "PortRange"
+          ]
         },
-        "caveat": {
+        "MachinePorts": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "MachineTag": {
+              "type": "string"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "SubnetTag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "MachineTag",
+            "SubnetTag"
           ]
         },
-        "packet": {
+        "MachinePortsParams": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
+            "Params": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePorts"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Params"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "DiskManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "SetMachineBlockDevices": {
+        },
+        "MachinePortsResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetMachineBlockDevices"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Ports": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachinePortRange"
+              }
             }
-          }
-        }
-      },
-      "definitions": {
-        "BlockDevice": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Ports"
+          ]
+        },
+        "MachinePortsResults": {
           "type": "object",
           "properties": {
-            "BusAddress": {
-              "type": "string"
-            },
-            "DeviceLinks": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/MachinePortsResult"
               }
-            },
-            "DeviceName": {
-              "type": "string"
-            },
-            "FilesystemType": {
-              "type": "string"
-            },
-            "HardwareId": {
-              "type": "string"
-            },
-            "InUse": {
-              "type": "boolean"
-            },
-            "Label": {
-              "type": "string"
-            },
-            "MountPoint": {
-              "type": "string"
-            },
-            "Size": {
-              "type": "integer"
-            },
-            "UUID": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "DeviceName",
-            "DeviceLinks",
-            "Label",
-            "UUID",
-            "HardwareId",
-            "BusAddress",
-            "Size",
-            "FilesystemType",
-            "InUse",
-            "MountPoint"
+            "Results"
           ]
         },
-        "Error": {
+        "ModelConfigResult": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Config"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Message": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "ErrorInfo": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
+        "PortRange": {
+          "type": "object",
+          "properties": {
+            "FromPort": {
+              "type": "integer"
             },
-            "MacaroonPath": {
+            "Protocol": {
               "type": "string"
+            },
+            "ToPort": {
+              "type": "integer"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "FromPort",
+            "ToPort",
+            "Protocol"
+          ]
         },
-        "ErrorResult": {
+        "StringResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
+            },
+            "Result": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "Error",
+            "Result"
           ]
         },
-        "ErrorResults": {
+        "StringResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/StringResult"
               }
             }
           },
             "Results"
           ]
         },
-        "Macaroon": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "data": {
+            "Result": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Result"
+          ]
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/StringsResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Results"
           ]
         },
-        "MachineBlockDevices": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
-            "blockdevices": {
+            "Changes": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/BlockDevice"
+                "type": "string"
               }
             },
-            "machine": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "StringsWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "machine"
+            "StringsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "SetMachineBlockDevices": {
+        "StringsWatchResults": {
           "type": "object",
           "properties": {
-            "machineblockdevices": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachineBlockDevices"
+                "$ref": "#/definitions/StringsWatchResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "machineblockdevices"
+            "Results"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "EntityWatcher",
+    "Name": "HighAvailability",
     "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "Next": {
+        "EnableHA": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/ControllersSpecs"
+            },
             "Result": {
-              "$ref": "#/definitions/EntitiesWatchResult"
+              "$ref": "#/definitions/ControllersChangeResults"
             }
           }
         },
-        "Stop": {
-          "type": "object"
+        "ResumeHAReplicationAfterUpgrade": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ResumeReplicationParams"
+            }
+          }
+        },
+        "StopHAReplicationForUpgrade": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/UpgradeMongoParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/MongoUpgradeResults"
+            }
+          }
         }
       },
       "definitions": {
-        "EntitiesWatchResult": {
+        "Address": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Scope": {
+              "type": "string"
             },
-            "EntityWatcherId": {
+            "SpaceName": {
               "type": "string"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "SpaceProviderId": {
+              "type": "string"
+            },
+            "Type": {
+              "type": "string"
+            },
+            "Value": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "EntityWatcherId",
-            "Changes",
-            "Error"
+            "Value",
+            "Type",
+            "Scope",
+            "SpaceName",
+            "SpaceProviderId"
           ]
         },
-        "Error": {
+        "ControllersChangeResult": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Message": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ControllersChanges"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "Result",
+            "Error"
           ]
         },
-        "ErrorInfo": {
+        "ControllersChangeResults": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ControllersChangeResult"
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "Macaroon": {
+        "ControllersChanges": {
           "type": "object",
           "properties": {
-            "caveats": {
+            "added": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/caveat"
+                "type": "string"
               }
             },
-            "data": {
+            "converted": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
             },
-            "id": {
-              "$ref": "#/definitions/packet"
+            "demoted": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "maintained": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "sig": {
+            "promoted": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
+              }
+            },
+            "removed": {
+              "type": "array",
+              "items": {
+                "type": "string"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
+          "additionalProperties": false
         },
-        "caveat": {
+        "ControllersSpec": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
+            "ModelTag": {
+              "type": "string"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "constraints": {
+              "$ref": "#/definitions/Value"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
-        },
-        "packet": {
-          "type": "object",
-          "properties": {
-            "headerLen": {
+            "num-controllers": {
               "type": "integer"
             },
-            "start": {
-              "type": "integer"
+            "placement": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "totalLen": {
-              "type": "integer"
+            "series": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "FilesystemAttachmentsWatcher",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
+            "ModelTag",
+            "num-controllers"
+          ]
+        },
+        "ControllersSpecs": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/MachineStorageIdsWatchResult"
+            "Specs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ControllersSpec"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Specs"
+          ]
         },
-        "Stop": {
-          "type": "object"
-        }
-      },
-      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
+        "HAMember": {
+          "type": "object",
+          "properties": {
+            "PublicAddress": {
+              "$ref": "#/definitions/Address"
+            },
+            "Series": {
+              "type": "string"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "PublicAddress",
+            "Series"
+          ]
+        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "MachineStorageId": {
-          "type": "object",
-          "properties": {
-            "attachmenttag": {
-              "type": "string"
-            },
-            "machinetag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "machinetag",
-            "attachmenttag"
-          ]
-        },
-        "MachineStorageIdsWatchResult": {
-          "type": "object",
-          "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MachineStorageId"
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "MachineStorageIdsWatcherId": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "MachineStorageIdsWatcherId",
-            "Changes",
-            "Error"
-          ]
-        },
-        "caveat": {
-          "type": "object",
-          "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
-        },
-        "packet": {
-          "type": "object",
-          "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Firewaller",
-    "Version": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "GetAssignedMachine": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "GetExposed": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "GetMachineActiveSubnets": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsResults"
-            }
-          }
-        },
-        "GetMachinePorts": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachinePortsParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/MachinePortsResults"
-            }
-          }
-        },
-        "InstanceId": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchModelMachines": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        },
-        "WatchOpenedPorts": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchUnits": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "BoolResult": {
+        "Member": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Address": {
+              "type": "string"
             },
-            "Result": {
+            "Arbiter": {
+              "type": "boolean"
+            },
+            "BuildIndexes": {
+              "type": "boolean"
+            },
+            "Hidden": {
               "type": "boolean"
+            },
+            "Id": {
+              "type": "integer"
+            },
+            "Priority": {
+              "type": "number"
+            },
+            "SlaveDelay": {
+              "type": "integer"
+            },
+            "Tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "Votes": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "Id",
+            "Address",
+            "Arbiter",
+            "BuildIndexes",
+            "Hidden",
+            "Priority",
+            "Tags",
+            "SlaveDelay",
+            "Votes"
           ]
         },
-        "BoolResults": {
+        "MongoUpgradeResults": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Master": {
+              "$ref": "#/definitions/HAMember"
+            },
+            "Members": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/BoolResult"
+                "$ref": "#/definitions/HAMember"
+              }
+            },
+            "RsMembers": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Member"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "RsMembers",
+            "Master",
+            "Members"
           ]
         },
-        "Entities": {
+        "ResumeReplicationParams": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Members": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/Member"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Members"
           ]
         },
-        "Entity": {
+        "UpgradeMongoParams": {
           "type": "object",
           "properties": {
-            "Tag": {
-              "type": "string"
+            "Target": {
+              "$ref": "#/definitions/Version"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "Target"
           ]
         },
-        "Error": {
+        "Value": {
           "type": "object",
           "properties": {
-            "Code": {
+            "arch": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "container": {
+              "type": "string"
             },
-            "Message": {
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Message",
-            "Code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
             },
-            "MacaroonPath": {
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
               "type": "string"
             }
           },
           "additionalProperties": false
         },
-        "LifeResult": {
+        "Version": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Major": {
+              "type": "integer"
             },
-            "Life": {
+            "Minor": {
+              "type": "integer"
+            },
+            "Patch": {
+              "type": "string"
+            },
+            "StorageEngine": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Life",
-            "Error"
+            "Major",
+            "Minor",
+            "Patch",
+            "StorageEngine"
           ]
         },
-        "LifeResults": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LifeResult"
-              }
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "Macaroon": {
+        "packet": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
+            "headerLen": {
+              "type": "integer"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "start": {
+              "type": "integer"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "MachinePortRange": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "HostKeyReporter",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ReportKeys": {
           "type": "object",
           "properties": {
-            "PortRange": {
-              "$ref": "#/definitions/PortRange"
+            "Params": {
+              "$ref": "#/definitions/SSHHostKeySet"
             },
-            "RelationTag": {
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "Code": {
               "type": "string"
             },
-            "UnitTag": {
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "UnitTag",
-            "RelationTag",
-            "PortRange"
+            "Message",
+            "Code"
           ]
         },
-        "MachinePorts": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "MachineTag": {
-              "type": "string"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "SubnetTag": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
           "additionalProperties": false,
           "required": [
-            "MachineTag",
-            "SubnetTag"
+            "Error"
           ]
         },
-        "MachinePortsParams": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Params": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachinePorts"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Params"
+            "Results"
           ]
         },
-        "MachinePortsResult": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "Ports": {
+            "data": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachinePortRange"
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Ports"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "MachinePortsResults": {
+        "SSHHostKeySet": {
           "type": "object",
           "properties": {
-            "Results": {
+            "entity-keys": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachinePortsResult"
+                "$ref": "#/definitions/SSHHostKeys"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "entity-keys"
           ]
         },
-        "ModelConfigResult": {
+        "SSHHostKeys": {
           "type": "object",
           "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
+            "public-keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
               }
+            },
+            "tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "tag",
+            "public-keys"
           ]
         },
-        "NotifyWatchResult": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "NotifyWatcherId": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "NotifyWatchResults": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
-              }
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ImageManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "DeleteImages": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ImageFilterParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
         },
-        "PortRange": {
+        "ListImages": {
           "type": "object",
           "properties": {
-            "FromPort": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/ImageFilterParams"
             },
-            "Protocol": {
+            "Result": {
+              "$ref": "#/definitions/ListImageResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "Code": {
               "type": "string"
             },
-            "ToPort": {
-              "type": "integer"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "FromPort",
-            "ToPort",
-            "Protocol"
+            "Message",
+            "Code"
           ]
         },
-        "StringResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Result": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "Error"
           ]
         },
-        "StringResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
             "Results"
           ]
         },
-        "StringsResult": {
+        "ImageFilterParams": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Result": {
+            "images": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/ImageSpec"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "images"
           ]
         },
-        "StringsResults": {
+        "ImageMetadata": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StringsResult"
-              }
+            "arch": {
+              "type": "string"
+            },
+            "created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "kind": {
+              "type": "string"
+            },
+            "series": {
+              "type": "string"
+            },
+            "url": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "kind",
+            "arch",
+            "series",
+            "url",
+            "created"
           ]
         },
-        "StringsWatchResult": {
+        "ImageSpec": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "arch": {
+              "type": "string"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "kind": {
+              "type": "string"
             },
-            "StringsWatcherId": {
+            "series": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
+            "kind",
+            "arch",
+            "series"
+          ]
+        },
+        "ListImageResult": {
+          "type": "object",
+          "properties": {
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ImageMetadata"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "result"
           ]
         },
-        "StringsWatchResults": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Results": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringsWatchResult"
+                "$ref": "#/definitions/caveat"
+              }
+            },
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "HighAvailability",
+    "Name": "ImageMetadata",
     "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "EnableHA": {
+        "Delete": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ControllersSpecs"
+              "$ref": "#/definitions/MetadataImageIds"
             },
             "Result": {
-              "$ref": "#/definitions/ControllersChangeResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "ResumeHAReplicationAfterUpgrade": {
+        "List": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ResumeReplicationParams"
+              "$ref": "#/definitions/ImageMetadataFilter"
+            },
+            "Result": {
+              "$ref": "#/definitions/ListCloudImageMetadataResult"
             }
           }
         },
-        "StopHAReplicationForUpgrade": {
+        "Save": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/UpgradeMongoParams"
+              "$ref": "#/definitions/MetadataSaveParams"
             },
             "Result": {
-              "$ref": "#/definitions/MongoUpgradeResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
+        },
+        "UpdateFromPublishedImages": {
+          "type": "object"
         }
       },
       "definitions": {
-        "Address": {
+        "CloudImageMetadata": {
           "type": "object",
           "properties": {
-            "Scope": {
+            "arch": {
               "type": "string"
             },
-            "SpaceName": {
+            "image_id": {
               "type": "string"
             },
-            "SpaceProviderId": {
+            "priority": {
+              "type": "integer"
+            },
+            "region": {
               "type": "string"
             },
-            "Type": {
+            "root_storage_size": {
+              "type": "integer"
+            },
+            "root_storage_type": {
               "type": "string"
             },
-            "Value": {
+            "series": {
+              "type": "string"
+            },
+            "source": {
+              "type": "string"
+            },
+            "stream": {
+              "type": "string"
+            },
+            "version": {
+              "type": "string"
+            },
+            "virt_type": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope",
-            "SpaceName",
-            "SpaceProviderId"
+            "image_id",
+            "region",
+            "version",
+            "series",
+            "arch",
+            "source",
+            "priority"
           ]
         },
-        "ControllersChangeResult": {
+        "CloudImageMetadataList": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Result": {
-              "$ref": "#/definitions/ControllersChanges"
+            "metadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Result",
-            "Error"
-          ]
+          "additionalProperties": false
         },
-        "ControllersChangeResults": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ControllersChangeResult"
-              }
+            "Code": {
+              "type": "string"
+            },
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Message",
+            "Code"
           ]
         },
-        "ControllersChanges": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "added": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "converted": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "demoted": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "maintained": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "promoted": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "removed": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "MacaroonPath": {
+              "type": "string"
             }
           },
           "additionalProperties": false
         },
-        "ControllersSpec": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "ModelTag": {
-              "type": "string"
-            },
-            "constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "num-controllers": {
-              "type": "integer"
-            },
-            "placement": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "series": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ModelTag",
-            "num-controllers"
+            "Error"
           ]
         },
-        "ControllersSpecs": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Specs": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ControllersSpec"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Specs"
+            "Results"
           ]
         },
-        "Error": {
+        "ImageMetadataFilter": {
           "type": "object",
           "properties": {
-            "Code": {
+            "arches": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "region": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "root-storage-type": {
+              "type": "string"
             },
-            "Message": {
+            "series": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "stream": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Message",
-            "Code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
             },
-            "MacaroonPath": {
+            "virt_type": {
               "type": "string"
             }
           },
           "additionalProperties": false
         },
-        "HAMember": {
+        "ListCloudImageMetadataResult": {
           "type": "object",
           "properties": {
-            "PublicAddress": {
-              "$ref": "#/definitions/Address"
-            },
-            "Series": {
-              "type": "string"
-            },
-            "Tag": {
-              "type": "string"
+            "result": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag",
-            "PublicAddress",
-            "Series"
+            "result"
           ]
         },
         "Macaroon": {
             "sig"
           ]
         },
-        "Member": {
+        "MetadataImageIds": {
           "type": "object",
           "properties": {
-            "Address": {
-              "type": "string"
-            },
-            "Arbiter": {
-              "type": "boolean"
-            },
-            "BuildIndexes": {
-              "type": "boolean"
-            },
-            "Hidden": {
-              "type": "boolean"
-            },
-            "Id": {
-              "type": "integer"
-            },
-            "Priority": {
-              "type": "number"
-            },
-            "SlaveDelay": {
-              "type": "integer"
-            },
-            "Tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
+            "image_ids": {
+              "type": "array",
+              "items": {
+                "type": "string"
               }
-            },
-            "Votes": {
-              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Id",
-            "Address",
-            "Arbiter",
-            "BuildIndexes",
-            "Hidden",
-            "Priority",
-            "Tags",
-            "SlaveDelay",
-            "Votes"
+            "image_ids"
           ]
         },
-        "MongoUpgradeResults": {
+        "MetadataSaveParams": {
           "type": "object",
           "properties": {
-            "Master": {
-              "$ref": "#/definitions/HAMember"
-            },
-            "Members": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/HAMember"
-              }
-            },
-            "RsMembers": {
+            "metadata": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Member"
+                "$ref": "#/definitions/CloudImageMetadataList"
               }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "RsMembers",
-            "Master",
-            "Members"
-          ]
+          "additionalProperties": false
         },
-        "ResumeReplicationParams": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Members": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Member"
-              }
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Members"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "UpgradeMongoParams": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Target": {
-              "$ref": "#/definitions/Version"
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Target"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "Value": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "InstancePoller",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AreManuallyProvisioned": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "container": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "cpu-cores": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/BoolResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "cpu-power": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "InstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "instance-type": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "mem": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ProviderAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "root-disk": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/MachineAddressesResults"
+            }
+          }
+        },
+        "SetInstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
             },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetProviderAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetMachinesAddresses"
             },
-            "tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Status": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "virt-type": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
             }
-          },
-          "additionalProperties": false
+          }
         },
-        "Version": {
+        "WatchForModelConfigChanges": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        },
+        "WatchModelMachines": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Address": {
           "type": "object",
           "properties": {
-            "Major": {
-              "type": "integer"
+            "Scope": {
+              "type": "string"
             },
-            "Minor": {
-              "type": "integer"
+            "SpaceName": {
+              "type": "string"
             },
-            "Patch": {
+            "Type": {
               "type": "string"
             },
-            "StorageEngine": {
+            "Value": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Major",
-            "Minor",
-            "Patch",
-            "StorageEngine"
+            "Value",
+            "Type",
+            "Scope"
           ]
         },
-        "caveat": {
+        "BoolResult": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Result": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "Error",
+            "Result"
           ]
         },
-        "packet": {
+        "BoolResults": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/BoolResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Results"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "HostKeyReporter",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ReportKeys": {
+        },
+        "Entities": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SSHHostKeySet"
+            "Entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag"
+          ]
+        },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Info": {
+              "type": "string"
+            },
+            "Status": {
+              "type": "string"
+            },
+            "Tag": {
+              "type": "string"
             }
-          }
-        }
-      },
-      "definitions": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "Status",
+            "Info",
+            "Data"
+          ]
+        },
         "Error": {
           "type": "object",
           "properties": {
             "Results"
           ]
         },
+        "LifeResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Life": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Life",
+            "Error"
+          ]
+        },
+        "LifeResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "SSHHostKeySet": {
-          "type": "object",
-          "properties": {
-            "entity-keys": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SSHHostKeys"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "entity-keys"
-          ]
-        },
-        "SSHHostKeys": {
+        "MachineAddresses": {
           "type": "object",
           "properties": {
-            "public-keys": {
+            "Addresses": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Address"
               }
             },
-            "tag": {
+            "Tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag",
-            "public-keys"
-          ]
-        },
-        "caveat": {
-          "type": "object",
-          "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
-        },
-        "packet": {
-          "type": "object",
-          "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Tag",
+            "Addresses"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "ImageManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "DeleteImages": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ImageFilterParams"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
         },
-        "ListImages": {
+        "MachineAddressesResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ImageFilterParams"
+            "Addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/ListImageResult"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
-          }
-        }
-      },
-      "definitions": {
-        "Error": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Addresses"
+          ]
+        },
+        "MachineAddressesResults": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "Message": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineAddressesResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "Results"
           ]
         },
-        "ErrorInfo": {
+        "ModelConfigResult": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
-              "type": "string"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Config"
+          ]
         },
-        "ErrorResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
+            },
+            "NotifyWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
+            "NotifyWatcherId",
             "Error"
           ]
         },
-        "ErrorResults": {
+        "SetMachinesAddresses": {
           "type": "object",
           "properties": {
-            "Results": {
+            "MachineAddresses": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/MachineAddresses"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "MachineAddresses"
           ]
         },
-        "ImageFilterParams": {
+        "SetStatus": {
           "type": "object",
           "properties": {
-            "images": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ImageSpec"
+                "$ref": "#/definitions/EntityStatusArgs"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "images"
+            "Entities"
           ]
         },
-        "ImageMetadata": {
+        "StatusResult": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "created": {
-              "type": "string",
-              "format": "date-time"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "kind": {
+            "Id": {
               "type": "string"
             },
-            "series": {
+            "Info": {
               "type": "string"
             },
-            "url": {
+            "Life": {
+              "type": "string"
+            },
+            "Since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Status": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "kind",
-            "arch",
-            "series",
-            "url",
-            "created"
+            "Error",
+            "Id",
+            "Life",
+            "Status",
+            "Info",
+            "Data",
+            "Since"
           ]
         },
-        "ImageSpec": {
+        "StatusResults": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "kind": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
+        "StringResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "series": {
+            "Result": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "kind",
-            "arch",
-            "series"
+            "Error",
+            "Result"
           ]
         },
-        "ListImageResult": {
+        "StringResults": {
           "type": "object",
           "properties": {
-            "result": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ImageMetadata"
+                "$ref": "#/definitions/StringResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "result"
+            "Results"
           ]
         },
-        "Macaroon": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
+            "Changes": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
             },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "StringsWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "StringsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "ImageMetadata",
-    "Version": 2,
+    "Name": "KeyManager",
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Delete": {
+        "AddKeys": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/MetadataImageIds"
+              "$ref": "#/definitions/ModifyUserSSHKeys"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "List": {
+        "DeleteKeys": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ImageMetadataFilter"
+              "$ref": "#/definitions/ModifyUserSSHKeys"
             },
             "Result": {
-              "$ref": "#/definitions/ListCloudImageMetadataResult"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "Save": {
+        "ImportKeys": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/MetadataSaveParams"
+              "$ref": "#/definitions/ModifyUserSSHKeys"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "UpdateFromPublishedImages": {
-          "type": "object"
+        "ListKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ListSSHKeys"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsResults"
+            }
+          }
         }
       },
       "definitions": {
-        "CloudImageMetadata": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "image_id": {
-              "type": "string"
-            },
-            "priority": {
-              "type": "integer"
-            },
-            "region": {
-              "type": "string"
-            },
-            "root_storage_size": {
-              "type": "integer"
-            },
-            "root_storage_type": {
-              "type": "string"
-            },
-            "series": {
-              "type": "string"
-            },
-            "source": {
-              "type": "string"
-            },
-            "stream": {
-              "type": "string"
-            },
-            "version": {
-              "type": "string"
-            },
-            "virt_type": {
-              "type": "string"
+            "Entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "image_id",
-            "region",
-            "version",
-            "series",
-            "arch",
-            "source",
-            "priority"
+            "Entities"
           ]
         },
-        "CloudImageMetadataList": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "metadata": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudImageMetadata"
-              }
+            "Tag": {
+              "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Tag"
+          ]
         },
         "Error": {
           "type": "object",
             "Results"
           ]
         },
-        "ImageMetadataFilter": {
+        "ListSSHKeys": {
           "type": "object",
           "properties": {
-            "arches": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "region": {
-              "type": "string"
-            },
-            "root-storage-type": {
-              "type": "string"
-            },
-            "series": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "stream": {
-              "type": "string"
+            "Entities": {
+              "$ref": "#/definitions/Entities"
             },
-            "virt_type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "ListCloudImageMetadataResult": {
-          "type": "object",
-          "properties": {
-            "result": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/CloudImageMetadata"
-              }
+            "Mode": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "result"
+            "Entities",
+            "Mode"
           ]
         },
         "Macaroon": {
             "sig"
           ]
         },
-        "MetadataImageIds": {
+        "ModifyUserSSHKeys": {
           "type": "object",
           "properties": {
-            "image_ids": {
+            "Keys": {
               "type": "array",
               "items": {
                 "type": "string"
               }
+            },
+            "User": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "image_ids"
+            "User",
+            "Keys"
           ]
         },
-        "MetadataSaveParams": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "metadata": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Result": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudImageMetadataList"
+                "type": "string"
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Result"
+          ]
+        },
+        "StringsResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
         "caveat": {
           "type": "object",
               "type": "integer"
             },
             "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "InstancePoller",
-    "Version": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AreManuallyProvisioned": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/BoolResults"
-            }
-          }
-        },
-        "InstanceId": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "InstanceStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ModelConfig": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
-            }
-          }
-        },
-        "ProviderAddresses": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/MachineAddressesResults"
-            }
-          }
-        },
-        "SetInstanceStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetProviderAddresses": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetMachinesAddresses"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Status": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
-            }
-          }
-        },
-        "WatchForModelConfigChanges": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchModelMachines": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "Address": {
-          "type": "object",
-          "properties": {
-            "Scope": {
-              "type": "string"
-            },
-            "SpaceName": {
-              "type": "string"
-            },
-            "Type": {
-              "type": "string"
+              "type": "integer"
             },
-            "Value": {
-              "type": "string"
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "BoolResult": {
+        }
+      }
+    }
+  },
+  {
+    "Name": "KeyUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AuthorisedKeys": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "type": "boolean"
+              "$ref": "#/definitions/StringsResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error",
-            "Result"
-          ]
+          }
         },
-        "BoolResults": {
+        "WatchAuthorisedKeys": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/BoolResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
+          }
+        }
+      },
+      "definitions": {
         "Entities": {
           "type": "object",
           "properties": {
             "Tag"
           ]
         },
-        "EntityStatusArgs": {
-          "type": "object",
-          "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Info": {
-              "type": "string"
-            },
-            "Status": {
-              "type": "string"
-            },
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Status",
-            "Info",
-            "Data"
-          ]
-        },
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "LifeResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Life": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Life",
-            "Error"
-          ]
-        },
-        "LifeResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LifeResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "MachineAddresses": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "Addresses": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Address"
-              }
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Tag": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag",
-            "Addresses"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "MachineAddressesResult": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "Addresses": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Address"
+                "$ref": "#/definitions/NotifyWatchResult"
               }
-            },
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
+        "StringsResult": {
+          "type": "object",
+          "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
+            },
+            "Result": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
             "Error",
-            "Addresses"
+            "Result"
           ]
         },
-        "MachineAddressesResults": {
+        "StringsResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachineAddressesResult"
+                "$ref": "#/definitions/StringsResult"
               }
             }
           },
             "Results"
           ]
         },
-        "ModelConfigResult": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "NotifyWatchResult": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "start",
+            "totalLen",
+            "headerLen"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "LeadershipService",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "BlockUntilLeadershipReleased": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceTag"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResult"
+            }
+          }
+        },
+        "ClaimLeadership": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ClaimLeadershipBulkParams"
             },
-            "NotifyWatcherId": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ClaimLeadershipBulkResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId",
-            "Error"
-          ]
-        },
-        "SetMachinesAddresses": {
+          }
+        }
+      },
+      "definitions": {
+        "ClaimLeadershipBulkParams": {
           "type": "object",
           "properties": {
-            "MachineAddresses": {
+            "Params": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachineAddresses"
+                "$ref": "#/definitions/ClaimLeadershipParams"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineAddresses"
+            "Params"
           ]
         },
-        "SetStatus": {
+        "ClaimLeadershipBulkResults": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityStatusArgs"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Results"
           ]
         },
-        "StatusResult": {
+        "ClaimLeadershipParams": {
           "type": "object",
           "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "DurationSeconds": {
+              "type": "number"
             },
-            "Id": {
+            "ServiceTag": {
               "type": "string"
             },
-            "Info": {
+            "UnitTag": {
               "type": "string"
-            },
-            "Life": {
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ServiceTag",
+            "UnitTag",
+            "DurationSeconds"
+          ]
+        },
+        "Error": {
+          "type": "object",
+          "properties": {
+            "Code": {
               "type": "string"
             },
-            "Since": {
-              "type": "string",
-              "format": "date-time"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "Status": {
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Id",
-            "Life",
-            "Status",
-            "Info",
-            "Data",
-            "Since"
+            "Message",
+            "Code"
           ]
         },
-        "StatusResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StatusResult"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          "additionalProperties": false
         },
-        "StringResult": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
-            },
-            "Result": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "Error"
           ]
         },
-        "StringResults": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Results": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringResult"
+                "$ref": "#/definitions/caveat"
+              }
+            },
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "StringsWatchResult": {
+        "ServiceTag": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "StringsWatcherId": {
+            "Name": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
+            "Name"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "KeyManager",
+    "Name": "LifeFlag",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "AddKeys": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModifyUserSSHKeys"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "DeleteKeys": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModifyUserSSHKeys"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "ImportKeys": {
+        "Life": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModifyUserSSHKeys"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/LifeResults"
             }
           }
         },
-        "ListKeys": {
+        "Watch": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ListSSHKeys"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/StringsResults"
+              "$ref": "#/definitions/NotifyWatchResults"
             }
           }
         }
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
+        "LifeResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
+            },
+            "Life": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
+            "Life",
             "Error"
           ]
         },
-        "ErrorResults": {
+        "LifeResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/LifeResult"
               }
             }
           },
             "Results"
           ]
         },
-        "ListSSHKeys": {
-          "type": "object",
-          "properties": {
-            "Entities": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Mode": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities",
-            "Mode"
-          ]
-        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "ModifyUserSSHKeys": {
-          "type": "object",
-          "properties": {
-            "Keys": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "User": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "User",
-            "Keys"
-          ]
-        },
-        "StringsResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "NotifyWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "StringsResults": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringsResult"
+                "$ref": "#/definitions/NotifyWatchResult"
               }
             }
           },
     }
   },
   {
-    "Name": "KeyUpdater",
+    "Name": "Logger",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "AuthorisedKeys": {
+        "LoggingConfig": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/StringsResults"
+              "$ref": "#/definitions/StringResults"
             }
           }
         },
-        "WatchAuthorisedKeys": {
+        "WatchLoggingConfig": {
           "type": "object",
           "properties": {
             "Params": {
             "Results"
           ]
         },
-        "StringsResult": {
+        "StringResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
             "Result": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+              "type": "string"
             }
           },
           "additionalProperties": false,
             "Result"
           ]
         },
-        "StringsResults": {
+        "StringResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringsResult"
+                "$ref": "#/definitions/StringResult"
               }
             }
           },
     }
   },
   {
-    "Name": "LeadershipService",
-    "Version": 2,
+    "Name": "MachineActions",
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "BlockUntilLeadershipReleased": {
+        "Actions": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ApplicationTag"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResult"
+              "$ref": "#/definitions/ActionResults"
             }
           }
         },
-        "ClaimLeadership": {
+        "BeginActions": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ClaimLeadershipBulkParams"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ClaimLeadershipBulkResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
-        }
-      },
-      "definitions": {
-        "ApplicationTag": {
+        },
+        "FinishActions": {
           "type": "object",
           "properties": {
-            "Name": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/ActionExecutionResults"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Name"
-          ]
+          }
         },
-        "ClaimLeadershipBulkParams": {
+        "RunningActions": {
           "type": "object",
           "properties": {
             "Params": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ClaimLeadershipParams"
-              }
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ActionsByReceivers"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Params"
-          ]
+          }
         },
-        "ClaimLeadershipBulkResults": {
+        "WatchActionNotifications": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "ClaimLeadershipParams": {
+          }
+        }
+      },
+      "definitions": {
+        "Action": {
           "type": "object",
           "properties": {
-            "ApplicationTag": {
+            "name": {
               "type": "string"
             },
-            "DurationSeconds": {
-              "type": "number"
+            "parameters": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "UnitTag": {
+            "receiver": {
+              "type": "string"
+            },
+            "tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationTag",
-            "UnitTag",
-            "DurationSeconds"
+            "tag",
+            "receiver",
+            "name"
           ]
         },
-        "Error": {
+        "ActionExecutionResult": {
           "type": "object",
           "properties": {
-            "Code": {
+            "actiontag": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "message": {
+              "type": "string"
             },
-            "Message": {
+            "results": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "status": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "actiontag",
+            "status"
           ]
         },
-        "ErrorInfo": {
+        "ActionExecutionResults": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
-              "type": "string"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionExecutionResult"
+              }
             }
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "Macaroon": {
+        "ActionResult": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
+            "action": {
+              "$ref": "#/definitions/Action"
             },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "completed": {
+              "type": "string",
+              "format": "date-time"
             },
-            "id": {
-              "$ref": "#/definitions/packet"
+            "enqueued": {
+              "type": "string",
+              "format": "date-time"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
+            "message": {
+              "type": "string"
+            },
+            "output": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
-        },
-        "caveat": {
-          "type": "object",
-          "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
             },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "started": {
+              "type": "string",
+              "format": "date-time"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "status": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
+          "additionalProperties": false
         },
-        "packet": {
-          "type": "object",
-          "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "LifeFlag",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Life": {
+        "ActionResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "Watch": {
+        "ActionsByReceiver": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionResult"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "receiver": {
+              "type": "string"
             }
-          }
-        }
-      },
-      "definitions": {
+          },
+          "additionalProperties": false
+        },
+        "ActionsByReceivers": {
+          "type": "object",
+          "properties": {
+            "actions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ActionsByReceiver"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "Entities": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "LifeResult": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
-            },
-            "Life": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Life",
             "Error"
           ]
         },
-        "LifeResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/LifeResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
             "sig"
           ]
         },
-        "NotifyWatchResult": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
+            "Changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "NotifyWatcherId": {
+            "StringsWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
+            "StringsWatcherId",
+            "Changes",
             "Error"
           ]
         },
-        "NotifyWatchResults": {
+        "StringsWatchResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "$ref": "#/definitions/StringsWatchResult"
               }
             }
           },
     }
   },
   {
-    "Name": "Logger",
-    "Version": 1,
+    "Name": "MachineManager",
+    "Version": 2,
     "Schema": {
       "type": "object",
       "properties": {
-        "LoggingConfig": {
+        "AddMachines": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/AddMachines"
             },
             "Result": {
-              "$ref": "#/definitions/StringResults"
+              "$ref": "#/definitions/AddMachinesResults"
             }
           }
+        }
+      },
+      "definitions": {
+        "AddMachineParams": {
+          "type": "object",
+          "properties": {
+            "Addrs": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
+            },
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "ContainerType": {
+              "type": "string"
+            },
+            "Disks": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Constraints"
+              }
+            },
+            "HardwareCharacteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
+            },
+            "InstanceId": {
+              "type": "string"
+            },
+            "Jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "Nonce": {
+              "type": "string"
+            },
+            "ParentId": {
+              "type": "string"
+            },
+            "Placement": {
+              "$ref": "#/definitions/Placement"
+            },
+            "Series": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Series",
+            "Constraints",
+            "Jobs",
+            "Disks",
+            "Placement",
+            "ParentId",
+            "ContainerType",
+            "InstanceId",
+            "Nonce",
+            "HardwareCharacteristics",
+            "Addrs"
+          ]
         },
-        "WatchLoggingConfig": {
+        "AddMachines": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "MachineParams": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/AddMachineParams"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "MachineParams"
+          ]
+        },
+        "AddMachinesResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+            "Machine": {
+              "type": "string"
             }
-          }
-        }
-      },
-      "definitions": {
-        "Entities": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "Machine",
+            "Error"
+          ]
+        },
+        "AddMachinesResults": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Machines": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/AddMachinesResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Machines"
           ]
         },
-        "Entity": {
+        "Address": {
           "type": "object",
           "properties": {
-            "Tag": {
+            "Scope": {
+              "type": "string"
+            },
+            "SpaceName": {
+              "type": "string"
+            },
+            "Type": {
+              "type": "string"
+            },
+            "Value": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "Value",
+            "Type",
+            "Scope"
+          ]
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Count": {
+              "type": "integer"
+            },
+            "Pool": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Pool",
+            "Size",
+            "Count"
           ]
         },
         "Error": {
             "Macaroon": {
               "$ref": "#/definitions/Macaroon"
             },
-            "MacaroonPath": {
-              "type": "string"
+            "MacaroonPath": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "HardwareCharacteristics": {
+          "type": "object",
+          "properties": {
+            "Arch": {
+              "type": "string"
+            },
+            "AvailabilityZone": {
+              "type": "string"
+            },
+            "CpuCores": {
+              "type": "integer"
+            },
+            "CpuPower": {
+              "type": "integer"
+            },
+            "Mem": {
+              "type": "integer"
+            },
+            "RootDisk": {
+              "type": "integer"
+            },
+            "Tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
           "additionalProperties": false
             "sig"
           ]
         },
-        "NotifyWatchResult": {
+        "Placement": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Directive": {
+              "type": "string"
             },
-            "NotifyWatcherId": {
+            "Scope": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "Scope",
+            "Directive"
           ]
         },
-        "NotifyWatchResults": {
+        "Value": {
           "type": "object",
           "properties": {
-            "Results": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "type": "string"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "StringResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error",
-            "Result"
-          ]
-        },
-        "StringResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
+            "tags": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringResult"
+                "type": "string"
               }
+            },
+            "virt-type": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          "additionalProperties": false
         },
         "caveat": {
           "type": "object",
     }
   },
   {
-    "Name": "MachineActions",
+    "Name": "Machiner",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Actions": {
+        "APIAddresses": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ActionResults"
+              "$ref": "#/definitions/StringsResult"
             }
           }
         },
-        "BeginActions": {
+        "APIHostPorts": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/APIHostPortsResult"
             }
           }
         },
-        "FinishActions": {
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "EnsureDead": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ActionExecutionResults"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "RunningActions": {
+        "Jobs": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ActionsByReceivers"
+              "$ref": "#/definitions/JobsResults"
             }
           }
         },
-        "WatchActionNotifications": {
+        "Life": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
+              "$ref": "#/definitions/LifeResults"
             }
           }
-        }
-      },
-      "definitions": {
-        "Action": {
+        },
+        "ModelUUID": {
           "type": "object",
           "properties": {
-            "name": {
-              "type": "string"
-            },
-            "parameters": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "receiver": {
-              "type": "string"
-            },
-            "tag": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/StringResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "tag",
-            "receiver",
-            "name"
-          ]
+          }
         },
-        "ActionExecutionResult": {
+        "SetMachineAddresses": {
           "type": "object",
           "properties": {
-            "actiontag": {
-              "type": "string"
-            },
-            "message": {
-              "type": "string"
-            },
-            "results": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "Params": {
+              "$ref": "#/definitions/SetMachinesAddresses"
             },
-            "status": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "actiontag",
-            "status"
-          ]
+          }
         },
-        "ActionExecutionResults": {
+        "SetObservedNetworkConfig": {
           "type": "object",
           "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ActionExecutionResult"
-              }
+            "Params": {
+              "$ref": "#/definitions/SetMachineNetworkConfig"
             }
-          },
-          "additionalProperties": false
+          }
         },
-        "ActionResult": {
+        "SetProviderNetworkConfig": {
           "type": "object",
           "properties": {
-            "action": {
-              "$ref": "#/definitions/Action"
-            },
-            "completed": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "enqueued": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "message": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SetStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
             },
-            "output": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "UpdateStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
             },
-            "started": {
-              "type": "string",
-              "format": "date-time"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Watch": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "status": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
             }
-          },
-          "additionalProperties": false
+          }
         },
-        "ActionResults": {
+        "WatchAPIHostPorts": {
           "type": "object",
           "properties": {
-            "results": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "APIHostPortsResult": {
+          "type": "object",
+          "properties": {
+            "Servers": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ActionResult"
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Servers"
+          ]
         },
-        "ActionsByReceiver": {
+        "Address": {
           "type": "object",
           "properties": {
-            "actions": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ActionResult"
-              }
+            "Scope": {
+              "type": "string"
             },
-            "error": {
-              "$ref": "#/definitions/Error"
+            "SpaceName": {
+              "type": "string"
             },
-            "receiver": {
+            "Type": {
+              "type": "string"
+            },
+            "Value": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Value",
+            "Type",
+            "Scope"
+          ]
         },
-        "ActionsByReceivers": {
+        "BytesResult": {
           "type": "object",
           "properties": {
-            "actions": {
+            "Result": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ActionsByReceiver"
+                "type": "integer"
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Result"
+          ]
         },
         "Entities": {
           "type": "object",
             "Tag"
           ]
         },
+        "EntityStatusArgs": {
+          "type": "object",
+          "properties": {
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Info": {
+              "type": "string"
+            },
+            "Status": {
+              "type": "string"
+            },
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "Status",
+            "Info",
+            "Data"
+          ]
+        },
         "Error": {
           "type": "object",
           "properties": {
             "Results"
           ]
         },
-        "Macaroon": {
-          "type": "object",
-          "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
-        },
-        "StringsWatchResult": {
-          "type": "object",
-          "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "StringsWatcherId": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
-          ]
-        },
-        "StringsWatchResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StringsWatchResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "caveat": {
-          "type": "object",
-          "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
-        },
-        "packet": {
+        "HostPort": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Address": {
+              "$ref": "#/definitions/Address"
             },
-            "totalLen": {
+            "Port": {
               "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Address",
+            "Port"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "MachineManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "AddMachines": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/AddMachines"
-            },
-            "Result": {
-              "$ref": "#/definitions/AddMachinesResults"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "AddMachineParams": {
+        },
+        "JobsResult": {
           "type": "object",
-          "properties": {
-            "Addrs": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Address"
-              }
-            },
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "ContainerType": {
-              "type": "string"
-            },
-            "Disks": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Constraints"
-              }
-            },
-            "HardwareCharacteristics": {
-              "$ref": "#/definitions/HardwareCharacteristics"
-            },
-            "InstanceId": {
-              "type": "string"
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
             "Jobs": {
               "type": "array",
               "items": {
                 "type": "string"
               }
-            },
-            "Nonce": {
-              "type": "string"
-            },
-            "ParentId": {
-              "type": "string"
-            },
-            "Placement": {
-              "$ref": "#/definitions/Placement"
-            },
-            "Series": {
-              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Series",
-            "Constraints",
             "Jobs",
-            "Disks",
-            "Placement",
-            "ParentId",
-            "ContainerType",
-            "InstanceId",
-            "Nonce",
-            "HardwareCharacteristics",
-            "Addrs"
+            "Error"
           ]
         },
-        "AddMachines": {
+        "JobsResults": {
           "type": "object",
           "properties": {
-            "MachineParams": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/AddMachineParams"
+                "$ref": "#/definitions/JobsResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineParams"
+            "Results"
           ]
         },
-        "AddMachinesResult": {
+        "LifeResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Machine": {
+            "Life": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Machine",
+            "Life",
             "Error"
           ]
         },
-        "AddMachinesResults": {
+        "LifeResults": {
           "type": "object",
           "properties": {
-            "Machines": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/AddMachinesResult"
+                "$ref": "#/definitions/LifeResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Machines"
+            "Results"
           ]
         },
-        "Address": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Scope": {
-              "type": "string"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "SpaceName": {
-              "type": "string"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "Type": {
-              "type": "string"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Value": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "Constraints": {
+        "MachineAddresses": {
           "type": "object",
           "properties": {
-            "Count": {
-              "type": "integer"
+            "Addresses": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Address"
+              }
             },
-            "Pool": {
+            "Tag": {
               "type": "string"
-            },
-            "Size": {
-              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Pool",
-            "Size",
-            "Count"
+            "Tag",
+            "Addresses"
           ]
         },
-        "Error": {
+        "NetworkConfig": {
           "type": "object",
           "properties": {
-            "Code": {
+            "Address": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "CIDR": {
+              "type": "string"
             },
-            "Message": {
+            "ConfigType": {
+              "type": "string"
+            },
+            "DNSSearchDomains": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DNSServers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DeviceIndex": {
+              "type": "integer"
+            },
+            "Disabled": {
+              "type": "boolean"
+            },
+            "GatewayAddress": {
+              "type": "string"
+            },
+            "InterfaceName": {
+              "type": "string"
+            },
+            "InterfaceType": {
+              "type": "string"
+            },
+            "MACAddress": {
+              "type": "string"
+            },
+            "MTU": {
+              "type": "integer"
+            },
+            "NoAutoStart": {
+              "type": "boolean"
+            },
+            "ParentInterfaceName": {
+              "type": "string"
+            },
+            "ProviderAddressId": {
+              "type": "string"
+            },
+            "ProviderId": {
               "type": "string"
+            },
+            "ProviderSpaceId": {
+              "type": "string"
+            },
+            "ProviderSubnetId": {
+              "type": "string"
+            },
+            "ProviderVLANId": {
+              "type": "string"
+            },
+            "VLANTag": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "DeviceIndex",
+            "MACAddress",
+            "CIDR",
+            "MTU",
+            "ProviderId",
+            "ProviderSubnetId",
+            "ProviderSpaceId",
+            "ProviderAddressId",
+            "ProviderVLANId",
+            "VLANTag",
+            "InterfaceName",
+            "ParentInterfaceName",
+            "InterfaceType",
+            "Disabled"
           ]
         },
-        "ErrorInfo": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "MacaroonPath": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId",
+            "Error"
+          ]
         },
-        "HardwareCharacteristics": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "Arch": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
+        "SetMachineNetworkConfig": {
+          "type": "object",
+          "properties": {
+            "Config": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
             },
-            "AvailabilityZone": {
+            "Tag": {
               "type": "string"
-            },
-            "CpuCores": {
-              "type": "integer"
-            },
-            "CpuPower": {
-              "type": "integer"
-            },
-            "Mem": {
-              "type": "integer"
-            },
-            "RootDisk": {
-              "type": "integer"
-            },
-            "Tags": {
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "Config"
+          ]
+        },
+        "SetMachinesAddresses": {
+          "type": "object",
+          "properties": {
+            "MachineAddresses": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/MachineAddresses"
               }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "MachineAddresses"
+          ]
         },
-        "Macaroon": {
+        "SetStatus": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            "Entities": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/EntityStatusArgs"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Entities"
           ]
         },
-        "Placement": {
+        "StringResult": {
           "type": "object",
           "properties": {
-            "Directive": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Scope": {
+            "Result": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Scope",
-            "Directive"
+            "Error",
+            "Result"
           ]
         },
-        "Value": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "container": {
-              "type": "string"
-            },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "instance-type": {
-              "type": "string"
-            },
-            "mem": {
-              "type": "integer"
-            },
-            "root-disk": {
-              "type": "integer"
-            },
-            "spaces": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "tags": {
+            "Result": {
               "type": "array",
               "items": {
                 "type": "string"
               }
-            },
-            "virt-type": {
-              "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Result"
+          ]
         },
         "caveat": {
           "type": "object",
     }
   },
   {
-    "Name": "Machiner",
+    "Name": "MeterStatus",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
-        },
-        "CACert": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/BytesResult"
-            }
-          }
-        },
-        "EnsureDead": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Jobs": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/JobsResults"
-            }
-          }
-        },
-        "Life": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
-            }
-          }
-        },
-        "ModelUUID": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
-            }
-          }
-        },
-        "SetMachineAddresses": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetMachinesAddresses"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetObservedNetworkConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetMachineNetworkConfig"
-            }
-          }
-        },
-        "SetProviderNetworkConfig": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "UpdateStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
-            }
-          }
-        },
-        "WatchAPIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "APIHostPortsResult": {
-          "type": "object",
-          "properties": {
-            "Servers": {
-              "type": "array",
-              "items": {
-                "type": "array",
-                "items": {
-                  "$ref": "#/definitions/HostPort"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Servers"
-          ]
-        },
-        "Address": {
+        "GetMeterStatus": {
           "type": "object",
           "properties": {
-            "Scope": {
-              "type": "string"
-            },
-            "SpaceName": {
-              "type": "string"
-            },
-            "Type": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "Value": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/MeterStatusResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Value",
-            "Type",
-            "Scope"
-          ]
+          }
         },
-        "BytesResult": {
+        "WatchMeterStatus": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
             "Result": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+              "$ref": "#/definitions/NotifyWatchResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Result"
-          ]
-        },
+          }
+        }
+      },
+      "definitions": {
         "Entities": {
           "type": "object",
           "properties": {
             "Tag"
           ]
         },
-        "EntityStatusArgs": {
-          "type": "object",
-          "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Info": {
-              "type": "string"
-            },
-            "Status": {
-              "type": "string"
-            },
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Status",
-            "Info",
-            "Data"
-          ]
-        },
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Results": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "$ref": "#/definitions/caveat"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
-        "HostPort": {
-          "type": "object",
-          "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
             },
-            "Port": {
-              "type": "integer"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Address",
-            "Port"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "JobsResult": {
+        "MeterStatusResult": {
           "type": "object",
           "properties": {
+            "Code": {
+              "type": "string"
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Jobs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Info": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Jobs",
+            "Code",
+            "Info",
             "Error"
           ]
         },
-        "JobsResults": {
+        "MeterStatusResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/JobsResult"
+                "$ref": "#/definitions/MeterStatusResult"
               }
             }
           },
             "Results"
           ]
         },
-        "LifeResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Life": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Life",
+            "NotifyWatcherId",
             "Error"
           ]
         },
-        "LifeResults": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/LifeResult"
+                "$ref": "#/definitions/NotifyWatchResult"
               }
             }
           },
             "Results"
           ]
         },
-        "Macaroon": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
+            "caveatId": {
               "$ref": "#/definitions/packet"
             },
             "location": {
               "$ref": "#/definitions/packet"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
             "location",
-            "id",
-            "caveats",
-            "sig"
+            "caveatId",
+            "verificationId"
           ]
         },
-        "MachineAddresses": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Addresses": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Address"
-              }
+            "headerLen": {
+              "type": "integer"
             },
-            "Tag": {
-              "type": "string"
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag",
-            "Addresses"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "NetworkConfig": {
-          "type": "object",
-          "properties": {
-            "Address": {
-              "type": "string"
-            },
-            "CIDR": {
-              "type": "string"
-            },
-            "ConfigType": {
-              "type": "string"
-            },
-            "DNSSearchDomains": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "DNSServers": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "DeviceIndex": {
-              "type": "integer"
-            },
-            "Disabled": {
-              "type": "boolean"
-            },
-            "GatewayAddress": {
-              "type": "string"
-            },
-            "InterfaceName": {
-              "type": "string"
-            },
-            "InterfaceType": {
-              "type": "string"
-            },
-            "MACAddress": {
-              "type": "string"
-            },
-            "MTU": {
-              "type": "integer"
-            },
-            "NoAutoStart": {
-              "type": "boolean"
-            },
-            "ParentInterfaceName": {
-              "type": "string"
-            },
-            "ProviderAddressId": {
-              "type": "string"
-            },
-            "ProviderId": {
-              "type": "string"
+        }
+      }
+    }
+  },
+  {
+    "Name": "MetricsAdder",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddMetricBatches": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/MetricBatchParams"
             },
-            "ProviderSpaceId": {
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Error": {
+          "type": "object",
+          "properties": {
+            "Code": {
               "type": "string"
             },
-            "ProviderSubnetId": {
-              "type": "string"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "ProviderVLANId": {
+            "Message": {
               "type": "string"
-            },
-            "VLANTag": {
-              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "DeviceIndex",
-            "MACAddress",
-            "CIDR",
-            "MTU",
-            "ProviderId",
-            "ProviderSubnetId",
-            "ProviderSpaceId",
-            "ProviderAddressId",
-            "ProviderVLANId",
-            "VLANTag",
-            "InterfaceName",
-            "ParentInterfaceName",
-            "InterfaceType",
-            "Disabled"
+            "Message",
+            "Code"
           ]
         },
-        "NotifyWatchResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "NotifyWatcherId": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
             "Error"
           ]
         },
-        "NotifyWatchResults": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "$ref": "#/definitions/ErrorResult"
               }
             }
           },
             "Results"
           ]
         },
-        "SetMachineNetworkConfig": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Config": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NetworkConfig"
+                "$ref": "#/definitions/caveat"
               }
             },
-            "Tag": {
-              "type": "string"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag",
-            "Config"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "SetMachinesAddresses": {
+        "Metric": {
           "type": "object",
           "properties": {
-            "MachineAddresses": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MachineAddresses"
-              }
+            "Key": {
+              "type": "string"
+            },
+            "Time": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Value": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineAddresses"
+            "Key",
+            "Value",
+            "Time"
           ]
         },
-        "SetStatus": {
+        "MetricBatch": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "CharmURL": {
+              "type": "string"
+            },
+            "Created": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Metrics": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityStatusArgs"
+                "$ref": "#/definitions/Metric"
               }
+            },
+            "UUID": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "UUID",
+            "CharmURL",
+            "Created",
+            "Metrics"
           ]
         },
-        "StringResult": {
+        "MetricBatchParam": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Batch": {
+              "$ref": "#/definitions/MetricBatch"
             },
-            "Result": {
+            "Tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "Tag",
+            "Batch"
           ]
         },
-        "StringsResult": {
+        "MetricBatchParams": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Result": {
+            "Batches": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/MetricBatchParam"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "Batches"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "MeterStatus",
+    "Name": "MetricsDebug",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "GetMeterStatus": {
+        "GetMetrics": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/MeterStatusResults"
+              "$ref": "#/definitions/MetricResults"
             }
           }
         },
-        "WatchMeterStatus": {
+        "SetMeterStatus": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/MeterStatusParams"
             },
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         }
             "Tag"
           ]
         },
+        "EntityMetrics": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "metrics": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MetricResult"
+              }
+            }
+          },
+          "additionalProperties": false
+        },
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error"
+          ]
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "MeterStatusResult": {
+        "MeterStatusParam": {
           "type": "object",
           "properties": {
-            "Code": {
+            "code": {
               "type": "string"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "info": {
+              "type": "string"
             },
-            "Info": {
+            "tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Code",
-            "Info",
-            "Error"
+            "tag",
+            "code",
+            "info"
           ]
         },
-        "MeterStatusResults": {
+        "MeterStatusParams": {
           "type": "object",
           "properties": {
-            "Results": {
+            "statues": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MeterStatusResult"
+                "$ref": "#/definitions/MeterStatusParam"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "statues"
           ]
         },
-        "NotifyWatchResult": {
+        "MetricResult": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "key": {
+              "type": "string"
+            },
+            "time": {
+              "type": "string",
+              "format": "date-time"
             },
-            "NotifyWatcherId": {
+            "value": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "time",
+            "key",
+            "value"
           ]
         },
-        "NotifyWatchResults": {
+        "MetricResults": {
           "type": "object",
           "properties": {
-            "Results": {
+            "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "$ref": "#/definitions/EntityMetrics"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "results"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "MetricsAdder",
-    "Version": 2,
+    "Name": "MetricsManager",
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "AddMetricBatches": {
+        "CleanupOldMetrics": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/MetricBatchParams"
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "SendMetrics": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
         }
       },
       "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "Entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag"
+          ]
+        },
         "Error": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "Metric": {
-          "type": "object",
-          "properties": {
-            "Key": {
-              "type": "string"
-            },
-            "Time": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Value": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Key",
-            "Value",
-            "Time"
-          ]
-        },
-        "MetricBatch": {
-          "type": "object",
-          "properties": {
-            "CharmURL": {
-              "type": "string"
-            },
-            "Created": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Metrics": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Metric"
-              }
-            },
-            "UUID": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "UUID",
-            "CharmURL",
-            "Created",
-            "Metrics"
-          ]
-        },
-        "MetricBatchParam": {
-          "type": "object",
-          "properties": {
-            "Batch": {
-              "$ref": "#/definitions/MetricBatch"
-            },
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Batch"
-          ]
-        },
-        "MetricBatchParams": {
-          "type": "object",
-          "properties": {
-            "Batches": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MetricBatchParam"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Batches"
-          ]
-        },
         "caveat": {
           "type": "object",
           "properties": {
     }
   },
   {
-    "Name": "MetricsDebug",
-    "Version": 2,
+    "Name": "MigrationFlag",
+    "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "GetMetrics": {
+        "Phase": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/MetricResults"
+              "$ref": "#/definitions/PhaseResults"
             }
           }
         },
-        "SetMeterStatus": {
+        "Watch": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/MeterStatusParams"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/NotifyWatchResults"
             }
           }
         }
             "Tag"
           ]
         },
-        "EntityMetrics": {
-          "type": "object",
-          "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
-            },
-            "metrics": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/MetricResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "MeterStatusParam": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "code": {
-              "type": "string"
-            },
-            "info": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "tag": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "tag",
-            "code",
-            "info"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "MeterStatusParams": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "statues": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MeterStatusParam"
+                "$ref": "#/definitions/NotifyWatchResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "statues"
+            "Results"
           ]
         },
-        "MetricResult": {
+        "PhaseResult": {
           "type": "object",
           "properties": {
-            "key": {
-              "type": "string"
-            },
-            "time": {
-              "type": "string",
-              "format": "date-time"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "value": {
+            "phase": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "time",
-            "key",
-            "value"
+            "phase",
+            "Error"
           ]
         },
-        "MetricResults": {
+        "PhaseResults": {
           "type": "object",
           "properties": {
-            "results": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/EntityMetrics"
+                "$ref": "#/definitions/PhaseResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "Results"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "MetricsManager",
+    "Name": "MigrationMaster",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "CleanupOldMetrics": {
+        "Export": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/SerializedModel"
             }
           }
         },
-        "SendMetrics": {
+        "GetMigrationStatus": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/FullMigrationStatus"
             }
           }
-        }
-      },
-      "definitions": {
-        "Entities": {
+        },
+        "SetPhase": {
           "type": "object",
           "properties": {
-            "Entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
+            "Params": {
+              "$ref": "#/definitions/SetMigrationPhaseArgs"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities"
-          ]
+          }
         },
-        "Entity": {
+        "Watch": {
           "type": "object",
           "properties": {
-            "Tag": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
-        },
+          }
+        }
+      },
+      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
+        "FullMigrationStatus": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
+            "attempt": {
+              "type": "integer"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "spec": {
+              "$ref": "#/definitions/ModelMigrationSpec"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "spec",
+            "attempt",
+            "phase"
           ]
         },
         "Macaroon": {
             "sig"
           ]
         },
+        "ModelMigrationSpec": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            },
+            "target-info": {
+              "$ref": "#/definitions/ModelMigrationTargetInfo"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag",
+            "target-info"
+          ]
+        },
+        "ModelMigrationTargetInfo": {
+          "type": "object",
+          "properties": {
+            "addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "auth-tag": {
+              "type": "string"
+            },
+            "ca-cert": {
+              "type": "string"
+            },
+            "controller-tag": {
+              "type": "string"
+            },
+            "password": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "controller-tag",
+            "addrs",
+            "ca-cert",
+            "auth-tag",
+            "password"
+          ]
+        },
+        "NotifyWatchResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "NotifyWatcherId": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId",
+            "Error"
+          ]
+        },
+        "SerializedModel": {
+          "type": "object",
+          "properties": {
+            "bytes": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "bytes"
+          ]
+        },
+        "SetMigrationPhaseArgs": {
+          "type": "object",
+          "properties": {
+            "phase": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "phase"
+          ]
+        },
         "caveat": {
           "type": "object",
           "properties": {
     }
   },
   {
-    "Name": "MigrationFlag",
+    "Name": "MigrationMinion",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Phase": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/PhaseResults"
-            }
-          }
-        },
         "Watch": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+              "$ref": "#/definitions/NotifyWatchResult"
             }
           }
         }
       },
       "definitions": {
-        "Entities": {
-          "type": "object",
-          "properties": {
-            "Entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Entities"
-          ]
-        },
-        "Entity": {
-          "type": "object",
-          "properties": {
-            "Tag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
-        },
         "Error": {
           "type": "object",
           "properties": {
             },
             "data": {
               "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
-        },
-        "NotifyWatchResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "NotifyWatcherId": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId",
-            "Error"
-          ]
-        },
-        "NotifyWatchResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "PhaseResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "phase": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "phase",
+            "NotifyWatcherId",
             "Error"
           ]
         },
-        "PhaseResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/PhaseResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
         "caveat": {
           "type": "object",
           "properties": {
     }
   },
   {
-    "Name": "MigrationMaster",
+    "Name": "MigrationStatusWatcher",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Export": {
+        "Next": {
           "type": "object",
           "properties": {
             "Result": {
+              "$ref": "#/definitions/MigrationStatus"
+            }
+          }
+        },
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "MigrationStatus": {
+          "type": "object",
+          "properties": {
+            "attempt": {
+              "type": "integer"
+            },
+            "phase": {
+              "type": "string"
+            },
+            "source-api-addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "source-ca-cert": {
+              "type": "string"
+            },
+            "target-api-addrs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "target-ca-cert": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "attempt",
+            "phase",
+            "source-api-addrs",
+            "source-ca-cert",
+            "target-api-addrs",
+            "target-ca-cert"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "MigrationTarget",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Abort": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            }
+          }
+        },
+        "Activate": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelArgs"
+            }
+          }
+        },
+        "Import": {
+          "type": "object",
+          "properties": {
+            "Params": {
               "$ref": "#/definitions/SerializedModel"
             }
           }
+        }
+      },
+      "definitions": {
+        "ModelArgs": {
+          "type": "object",
+          "properties": {
+            "model-tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "model-tag"
+          ]
+        },
+        "SerializedModel": {
+          "type": "object",
+          "properties": {
+            "bytes": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "bytes"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ModelManager",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ConfigSkeleton": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelSkeletonConfigArgs"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
         },
-        "GetMigrationStatus": {
+        "CreateModel": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModelCreateArgs"
+            },
             "Result": {
-              "$ref": "#/definitions/FullMigrationStatus"
+              "$ref": "#/definitions/Model"
             }
           }
         },
-        "SetPhase": {
+        "ListModels": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/SetMigrationPhaseArgs"
+              "$ref": "#/definitions/Entity"
+            },
+            "Result": {
+              "$ref": "#/definitions/UserModelList"
+            }
+          }
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ModelInfoResults"
+            }
+          }
+        },
+        "ModifyModelAccess": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ModifyModelAccessRequest"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "Entities": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Entity"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Entities"
+          ]
+        },
+        "Entity": {
+          "type": "object",
+          "properties": {
+            "Tag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag"
+          ]
+        },
+        "EntityStatus": {
+          "type": "object",
+          "properties": {
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Info": {
+              "type": "string"
+            },
+            "Since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Status": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Status",
+            "Info",
+            "Data",
+            "Since"
+          ]
         },
-        "Watch": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
         "Error": {
           "type": "object",
           "properties": {
           },
           "additionalProperties": false
         },
-        "FullMigrationStatus": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "attempt": {
-              "type": "integer"
-            },
-            "phase": {
-              "type": "string"
-            },
-            "spec": {
-              "$ref": "#/definitions/ModelMigrationSpec"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "spec",
-            "attempt",
-            "phase"
+            "Error"
+          ]
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
           ]
         },
         "Macaroon": {
             "sig"
           ]
         },
-        "ModelMigrationSpec": {
+        "Model": {
           "type": "object",
           "properties": {
-            "model-tag": {
+            "Name": {
               "type": "string"
             },
-            "target-info": {
-              "$ref": "#/definitions/ModelMigrationTargetInfo"
+            "OwnerTag": {
+              "type": "string"
+            },
+            "UUID": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "model-tag",
-            "target-info"
+            "Name",
+            "UUID",
+            "OwnerTag"
           ]
         },
-        "ModelMigrationTargetInfo": {
+        "ModelConfigResult": {
           "type": "object",
           "properties": {
-            "addrs": {
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Config"
+          ]
+        },
+        "ModelCreateArgs": {
+          "type": "object",
+          "properties": {
+            "Account": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "OwnerTag": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "OwnerTag",
+            "Account",
+            "Config"
+          ]
+        },
+        "ModelInfo": {
+          "type": "object",
+          "properties": {
+            "DefaultSeries": {
+              "type": "string"
+            },
+            "Life": {
+              "type": "string"
+            },
+            "Name": {
+              "type": "string"
+            },
+            "OwnerTag": {
+              "type": "string"
+            },
+            "ProviderType": {
+              "type": "string"
+            },
+            "ServerUUID": {
+              "type": "string"
+            },
+            "Status": {
+              "$ref": "#/definitions/EntityStatus"
+            },
+            "UUID": {
+              "type": "string"
+            },
+            "Users": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/ModelUserInfo"
               }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Name",
+            "UUID",
+            "ServerUUID",
+            "ProviderType",
+            "DefaultSeries",
+            "OwnerTag",
+            "Life",
+            "Status",
+            "Users"
+          ]
+        },
+        "ModelInfoResult": {
+          "type": "object",
+          "properties": {
+            "error": {
+              "$ref": "#/definitions/Error"
             },
-            "auth-tag": {
+            "result": {
+              "$ref": "#/definitions/ModelInfo"
+            }
+          },
+          "additionalProperties": false
+        },
+        "ModelInfoResults": {
+          "type": "object",
+          "properties": {
+            "results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModelInfoResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "results"
+          ]
+        },
+        "ModelSkeletonConfigArgs": {
+          "type": "object",
+          "properties": {
+            "Provider": {
               "type": "string"
             },
-            "ca-cert": {
+            "Region": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Provider",
+            "Region"
+          ]
+        },
+        "ModelUserInfo": {
+          "type": "object",
+          "properties": {
+            "access": {
               "type": "string"
             },
-            "controller-tag": {
+            "displayname": {
               "type": "string"
             },
-            "password": {
+            "lastconnection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "user": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "controller-tag",
-            "addrs",
-            "ca-cert",
-            "auth-tag",
-            "password"
+            "user",
+            "displayname",
+            "lastconnection",
+            "access"
           ]
         },
-        "NotifyWatchResult": {
+        "ModifyModelAccess": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "access": {
+              "type": "string"
             },
-            "NotifyWatcherId": {
+            "action": {
+              "type": "string"
+            },
+            "model-tag": {
+              "type": "string"
+            },
+            "user-tag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "user-tag",
+            "action",
+            "access",
+            "model-tag"
+          ]
+        },
+        "ModifyModelAccessRequest": {
+          "type": "object",
+          "properties": {
+            "changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ModifyModelAccess"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "changes"
           ]
         },
-        "SerializedModel": {
+        "UserModel": {
           "type": "object",
           "properties": {
-            "bytes": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "LastConnection": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Model": {
+              "$ref": "#/definitions/Model"
             }
           },
           "additionalProperties": false,
           "required": [
-            "bytes"
+            "Model",
+            "LastConnection"
           ]
         },
-        "SetMigrationPhaseArgs": {
+        "UserModelList": {
           "type": "object",
           "properties": {
-            "phase": {
-              "type": "string"
+            "UserModels": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/UserModel"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "phase"
+            "UserModels"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "MigrationMinion",
+    "Name": "NotifyWatcher",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "Watch": {
+        "Next": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Pinger",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Ping": {
+          "type": "object"
+        },
+        "Stop": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "Provisioner",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "APIAddresses": {
           "type": "object",
           "properties": {
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+              "$ref": "#/definitions/StringsResult"
             }
           }
-        }
-      },
-      "definitions": {
-        "Error": {
+        },
+        "APIHostPorts": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/APIHostPortsResult"
+            }
+          }
+        },
+        "CACert": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/BytesResult"
+            }
+          }
+        },
+        "Constraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Result": {
+              "$ref": "#/definitions/ConstraintsResults"
+            }
+          }
+        },
+        "ContainerConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ContainerConfig"
+            }
+          }
+        },
+        "ContainerManagerConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ContainerManagerConfigParams"
             },
-            "Message": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ContainerManagerConfig"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Message",
-            "Code"
-          ]
+          }
+        },
+        "DistributionGroup": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/DistributionGroupResults"
+            }
+          }
+        },
+        "EnsureDead": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "FindTools": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/FindToolsParams"
+            },
+            "Result": {
+              "$ref": "#/definitions/FindToolsResult"
+            }
+          }
+        },
+        "GetContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "InstanceId": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "InstanceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "Life": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/LifeResults"
+            }
+          }
+        },
+        "MachinesWithTransientErrors": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
+            }
+          }
+        },
+        "ModelConfig": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/ModelConfigResult"
+            }
+          }
+        },
+        "ModelUUID": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "PrepareContainerInterfaceInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/MachineNetworkConfigResults"
+            }
+          }
+        },
+        "ProvisioningInfo": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ProvisioningInfoResults"
+            }
+          }
+        },
+        "ReleaseContainerAddresses": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
         },
-        "ErrorInfo": {
+        "Remove": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "MacaroonPath": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false
+          }
         },
-        "Macaroon": {
+        "Series": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "Result": {
+              "$ref": "#/definitions/StringResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
-          ]
+          }
         },
-        "NotifyWatchResult": {
+        "SetInstanceInfo": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Params": {
+              "$ref": "#/definitions/InstancesInfo"
             },
-            "NotifyWatcherId": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId",
-            "Error"
-          ]
+          }
         },
-        "caveat": {
+        "SetInstanceStatus": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
             },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
+          }
         },
-        "packet": {
+        "SetPasswords": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/EntityPasswords"
             },
-            "totalLen": {
-              "type": "integer"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "MigrationStatusWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
+          }
+        },
+        "SetStatus": {
           "type": "object",
           "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
             "Result": {
-              "$ref": "#/definitions/MigrationStatus"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "Stop": {
-          "type": "object"
-        }
-      },
-      "definitions": {
-        "MigrationStatus": {
+        "SetSupportedContainers": {
           "type": "object",
           "properties": {
-            "attempt": {
-              "type": "integer"
-            },
-            "phase": {
-              "type": "string"
-            },
-            "source-api-addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "source-ca-cert": {
-              "type": "string"
-            },
-            "target-api-addrs": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Params": {
+              "$ref": "#/definitions/MachineContainersParams"
             },
-            "target-ca-cert": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "attempt",
-            "phase",
-            "source-api-addrs",
-            "source-ca-cert",
-            "target-api-addrs",
-            "target-ca-cert"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "MigrationTarget",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Abort": {
+          }
+        },
+        "StateAddresses": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModelArgs"
+            "Result": {
+              "$ref": "#/definitions/StringsResult"
             }
           }
         },
-        "Activate": {
+        "Status": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModelArgs"
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StatusResults"
             }
           }
         },
-        "Import": {
+        "Tools": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/SerializedModel"
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ToolsResults"
             }
           }
-        }
-      },
-      "definitions": {
-        "ModelArgs": {
+        },
+        "UpdateStatus": {
           "type": "object",
           "properties": {
-            "model-tag": {
-              "type": "string"
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "model-tag"
-          ]
+          }
         },
-        "SerializedModel": {
+        "WatchAPIHostPorts": {
           "type": "object",
           "properties": {
-            "bytes": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "bytes"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "ModelManager",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ConfigSkeleton": {
+          }
+        },
+        "WatchAllContainers": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModelSkeletonConfigArgs"
+              "$ref": "#/definitions/WatchContainers"
             },
             "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
+              "$ref": "#/definitions/StringsWatchResults"
             }
           }
         },
-        "CreateModel": {
+        "WatchContainers": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/ModelCreateArgs"
+              "$ref": "#/definitions/WatchContainers"
             },
             "Result": {
-              "$ref": "#/definitions/Model"
+              "$ref": "#/definitions/StringsWatchResults"
             }
           }
         },
-        "ListModels": {
+        "WatchForModelConfigChanges": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entity"
-            },
             "Result": {
-              "$ref": "#/definitions/UserModelList"
+              "$ref": "#/definitions/NotifyWatchResult"
             }
           }
         },
-        "ModelInfo": {
+        "WatchMachineErrorRetry": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/ModelInfoResults"
+              "$ref": "#/definitions/NotifyWatchResult"
             }
           }
         },
-        "ModifyModelAccess": {
+        "WatchModelMachines": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ModifyModelAccessRequest"
-            },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/StringsWatchResult"
             }
           }
         }
       },
       "definitions": {
-        "Entities": {
+        "APIHostPortsResult": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Servers": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "type": "array",
+                "items": {
+                  "$ref": "#/definitions/HostPort"
+                }
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Servers"
           ]
         },
-        "Entity": {
+        "Address": {
           "type": "object",
           "properties": {
-            "Tag": {
+            "Scope": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
-        },
-        "EntityStatus": {
-          "type": "object",
-          "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
             },
-            "Info": {
+            "SpaceName": {
               "type": "string"
             },
-            "Since": {
-              "type": "string",
-              "format": "date-time"
+            "Type": {
+              "type": "string"
             },
-            "Status": {
+            "Value": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Status",
-            "Info",
-            "Data",
-            "Since"
+            "Value",
+            "Type",
+            "Scope"
           ]
         },
-        "Error": {
+        "Binary": {
           "type": "object",
           "properties": {
-            "Code": {
+            "Arch": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "Message": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Message",
-            "Code"
-          ]
-        },
-        "ErrorInfo": {
-          "type": "object",
-          "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "Number": {
+              "$ref": "#/definitions/Number"
             },
-            "MacaroonPath": {
+            "Series": {
               "type": "string"
             }
           },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "Error"
-          ]
-        },
-        "ErrorResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
+            "Number",
+            "Series",
+            "Arch"
           ]
         },
-        "Macaroon": {
+        "BytesResult": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            "Result": {
               "type": "array",
               "items": {
                 "type": "integer"
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "Result"
           ]
         },
-        "Model": {
+        "CloudImageMetadata": {
           "type": "object",
           "properties": {
-            "Name": {
-              "type": "string"
-            },
-            "OwnerTag": {
+            "arch": {
               "type": "string"
             },
-            "UUID": {
+            "image_id": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Name",
-            "UUID",
-            "OwnerTag"
-          ]
-        },
-        "ModelConfigResult": {
-          "type": "object",
-          "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Config"
-          ]
-        },
-        "ModelCreateArgs": {
-          "type": "object",
-          "properties": {
-            "Account": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
             },
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "priority": {
+              "type": "integer"
             },
-            "OwnerTag": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "OwnerTag",
-            "Account",
-            "Config"
-          ]
-        },
-        "ModelInfo": {
-          "type": "object",
-          "properties": {
-            "Cloud": {
+            "region": {
               "type": "string"
             },
-            "DefaultSeries": {
-              "type": "string"
+            "root_storage_size": {
+              "type": "integer"
             },
-            "Life": {
+            "root_storage_type": {
               "type": "string"
             },
-            "Name": {
+            "series": {
               "type": "string"
             },
-            "OwnerTag": {
+            "source": {
               "type": "string"
             },
-            "ProviderType": {
+            "stream": {
               "type": "string"
             },
-            "ServerUUID": {
+            "version": {
               "type": "string"
             },
-            "Status": {
-              "$ref": "#/definitions/EntityStatus"
-            },
-            "UUID": {
+            "virt_type": {
               "type": "string"
-            },
-            "Users": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ModelUserInfo"
-              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Name",
-            "UUID",
-            "ServerUUID",
-            "ProviderType",
-            "DefaultSeries",
-            "Cloud",
-            "OwnerTag",
-            "Life",
-            "Status",
-            "Users"
+            "image_id",
+            "region",
+            "version",
+            "series",
+            "arch",
+            "source",
+            "priority"
           ]
         },
-        "ModelInfoResult": {
+        "ConstraintsResult": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
             },
-            "result": {
-              "$ref": "#/definitions/ModelInfo"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Constraints"
+          ]
         },
-        "ModelInfoResults": {
+        "ConstraintsResults": {
           "type": "object",
           "properties": {
-            "results": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModelInfoResult"
+                "$ref": "#/definitions/ConstraintsResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "Results"
           ]
         },
-        "ModelSkeletonConfigArgs": {
+        "ContainerConfig": {
           "type": "object",
           "properties": {
-            "Provider": {
+            "AllowLXCLoopMounts": {
+              "type": "boolean"
+            },
+            "AptMirror": {
               "type": "string"
             },
-            "Region": {
+            "AptProxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "AuthorizedKeys": {
+              "type": "string"
+            },
+            "PreferIPv6": {
+              "type": "boolean"
+            },
+            "ProviderType": {
               "type": "string"
+            },
+            "Proxy": {
+              "$ref": "#/definitions/Settings"
+            },
+            "SSLHostnameVerification": {
+              "type": "boolean"
+            },
+            "UpdateBehavior": {
+              "$ref": "#/definitions/UpdateBehavior"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Provider",
-            "Region"
+            "ProviderType",
+            "AuthorizedKeys",
+            "SSLHostnameVerification",
+            "Proxy",
+            "AptProxy",
+            "AptMirror",
+            "PreferIPv6",
+            "AllowLXCLoopMounts",
+            "UpdateBehavior"
           ]
         },
-        "ModelUserInfo": {
+        "ContainerManagerConfig": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "displayname": {
-              "type": "string"
-            },
-            "lastconnection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "user": {
-              "type": "string"
+            "ManagerConfig": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "user",
-            "displayname",
-            "lastconnection",
-            "access"
+            "ManagerConfig"
           ]
         },
-        "ModifyModelAccess": {
+        "ContainerManagerConfigParams": {
           "type": "object",
           "properties": {
-            "access": {
-              "type": "string"
-            },
-            "action": {
-              "type": "string"
-            },
-            "model-tag": {
-              "type": "string"
-            },
-            "user-tag": {
+            "Type": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "user-tag",
-            "action",
-            "access",
-            "model-tag"
+            "Type"
           ]
         },
-        "ModifyModelAccessRequest": {
+        "DistributionGroupResult": {
           "type": "object",
           "properties": {
-            "changes": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Result": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ModifyModelAccess"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "changes"
+            "Error",
+            "Result"
           ]
         },
-        "UserModel": {
+        "DistributionGroupResults": {
           "type": "object",
           "properties": {
-            "LastConnection": {
-              "type": "string",
-              "format": "date-time"
-            },
-            "Model": {
-              "$ref": "#/definitions/Model"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/DistributionGroupResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Model",
-            "LastConnection"
+            "Results"
           ]
         },
-        "UserModelList": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "UserModels": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/UserModel"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "UserModels"
+            "Entities"
           ]
         },
-        "caveat": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "Tag"
           ]
         },
-        "packet": {
+        "EntityPassword": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
+            "Password": {
+              "type": "string"
             },
-            "totalLen": {
-              "type": "integer"
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "Tag",
+            "Password"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "NotifyWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "Pinger",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Ping": {
-          "type": "object"
-        },
-        "Stop": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "Provisioner",
-    "Version": 3,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "APIAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "APIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/APIHostPortsResult"
-            }
-          }
         },
-        "CACert": {
+        "EntityPasswords": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/BytesResult"
+            "Changes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/EntityPassword"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Changes"
+          ]
         },
-        "Constraints": {
+        "EntityStatusArgs": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/ConstraintsResults"
+            "Info": {
+              "type": "string"
+            },
+            "Status": {
+              "type": "string"
+            },
+            "Tag": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "Status",
+            "Info",
+            "Data"
+          ]
         },
-        "ContainerConfig": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/ContainerConfig"
+            "Code": {
+              "type": "string"
+            },
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Message",
+            "Code"
+          ]
         },
-        "ContainerManagerConfig": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/ContainerManagerConfigParams"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Result": {
-              "$ref": "#/definitions/ContainerManagerConfig"
+            "MacaroonPath": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "DistributionGroup": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/DistributionGroupResults"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error"
+          ]
         },
-        "EnsureDead": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "FindTools": {
+        "FindToolsParams": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/FindToolsParams"
+            "Arch": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/FindToolsResult"
+            "MajorVersion": {
+              "type": "integer"
+            },
+            "MinorVersion": {
+              "type": "integer"
+            },
+            "Number": {
+              "$ref": "#/definitions/Number"
+            },
+            "Series": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Number",
+            "MajorVersion",
+            "MinorVersion",
+            "Arch",
+            "Series"
+          ]
         },
-        "GetContainerInterfaceInfo": {
+        "FindToolsResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+            "List": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Tools"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "List",
+            "Error"
+          ]
         },
-        "InstanceId": {
+        "HardwareCharacteristics": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Arch": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
+            "AvailabilityZone": {
+              "type": "string"
+            },
+            "CpuCores": {
+              "type": "integer"
+            },
+            "CpuPower": {
+              "type": "integer"
+            },
+            "Mem": {
+              "type": "integer"
+            },
+            "RootDisk": {
+              "type": "integer"
+            },
+            "Tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
-          }
+          },
+          "additionalProperties": false
         },
-        "InstanceStatus": {
+        "HostPort": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Address": {
+              "$ref": "#/definitions/Address"
             },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
+            "Port": {
+              "type": "integer"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Address",
+            "Port"
+          ]
         },
-        "Life": {
+        "InstanceInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Characteristics": {
+              "$ref": "#/definitions/HardwareCharacteristics"
             },
-            "Result": {
-              "$ref": "#/definitions/LifeResults"
+            "InstanceId": {
+              "type": "string"
+            },
+            "NetworkConfig": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
+            },
+            "Nonce": {
+              "type": "string"
+            },
+            "Tag": {
+              "type": "string"
+            },
+            "VolumeAttachments": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/VolumeAttachmentInfo"
+                }
+              }
+            },
+            "Volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Volume"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Tag",
+            "InstanceId",
+            "Nonce",
+            "Characteristics",
+            "Volumes",
+            "VolumeAttachments",
+            "NetworkConfig"
+          ]
         },
-        "MachinesWithTransientErrors": {
+        "InstancesInfo": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
+            "Machines": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/InstanceInfo"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Machines"
+          ]
         },
-        "ModelConfig": {
+        "LifeResult": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/ModelConfigResult"
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Life": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Life",
+            "Error"
+          ]
         },
-        "ModelUUID": {
+        "LifeResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringResult"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/LifeResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "PrepareContainerInterfaceInfo": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/MachineNetworkConfigResults"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "id": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
+          ]
         },
-        "ProvisioningInfo": {
+        "MachineContainers": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "ContainerTypes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/ProvisioningInfoResults"
+            "MachineTag": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "MachineTag",
+            "ContainerTypes"
+          ]
         },
-        "ReleaseContainerAddresses": {
+        "MachineContainersParams": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineContainers"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Params"
+          ]
         },
-        "Remove": {
+        "MachineNetworkConfigResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Info": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NetworkConfig"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Info"
+          ]
         },
-        "Series": {
+        "MachineNetworkConfigResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/MachineNetworkConfigResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "SetInstanceInfo": {
+        "ModelConfigResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/InstancesInfo"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Config"
+          ]
         },
-        "SetInstanceStatus": {
+        "NetworkConfig": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "Address": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "CIDR": {
+              "type": "string"
+            },
+            "ConfigType": {
+              "type": "string"
+            },
+            "DNSSearchDomains": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DNSServers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "DeviceIndex": {
+              "type": "integer"
+            },
+            "Disabled": {
+              "type": "boolean"
+            },
+            "GatewayAddress": {
+              "type": "string"
+            },
+            "InterfaceName": {
+              "type": "string"
+            },
+            "InterfaceType": {
+              "type": "string"
+            },
+            "MACAddress": {
+              "type": "string"
+            },
+            "MTU": {
+              "type": "integer"
+            },
+            "NoAutoStart": {
+              "type": "boolean"
+            },
+            "ParentInterfaceName": {
+              "type": "string"
+            },
+            "ProviderAddressId": {
+              "type": "string"
+            },
+            "ProviderId": {
+              "type": "string"
+            },
+            "ProviderSpaceId": {
+              "type": "string"
+            },
+            "ProviderSubnetId": {
+              "type": "string"
+            },
+            "ProviderVLANId": {
+              "type": "string"
+            },
+            "VLANTag": {
+              "type": "integer"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "DeviceIndex",
+            "MACAddress",
+            "CIDR",
+            "MTU",
+            "ProviderId",
+            "ProviderSubnetId",
+            "ProviderSpaceId",
+            "ProviderAddressId",
+            "ProviderVLANId",
+            "VLANTag",
+            "InterfaceName",
+            "ParentInterfaceName",
+            "InterfaceType",
+            "Disabled"
+          ]
         },
-        "SetPasswords": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/EntityPasswords"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+            "NotifyWatcherId": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "NotifyWatcherId",
+            "Error"
+          ]
         },
-        "SetStatus": {
+        "Number": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "Build": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "SetSupportedContainers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/MachineContainersParams"
+            "Major": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "StateAddresses": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsResult"
-            }
-          }
-        },
-        "Status": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Minor": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/StatusResults"
-            }
-          }
-        },
-        "Tools": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Patch": {
+              "type": "integer"
             },
-            "Result": {
-              "$ref": "#/definitions/ToolsResults"
+            "Tag": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Major",
+            "Minor",
+            "Tag",
+            "Patch",
+            "Build"
+          ]
         },
-        "UpdateStatus": {
+        "ProvisioningInfo": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/SetStatus"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
             },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
-            }
-          }
-        },
-        "WatchAPIHostPorts": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
-            }
-          }
-        },
-        "WatchAllContainers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/WatchContainers"
+            "EndpointBindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
-        "WatchContainers": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/WatchContainers"
+            "ImageMetadata": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/CloudImageMetadata"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
+            "Jobs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "Placement": {
+              "type": "string"
+            },
+            "Series": {
+              "type": "string"
+            },
+            "SubnetsToZones": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            },
+            "Tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "Volumes": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/VolumeParams"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Constraints",
+            "Series",
+            "Placement",
+            "Jobs",
+            "Volumes",
+            "Tags",
+            "SubnetsToZones",
+            "ImageMetadata",
+            "EndpointBindings"
+          ]
         },
-        "WatchForModelConfigChanges": {
+        "ProvisioningInfoResult": {
           "type": "object",
           "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+              "$ref": "#/definitions/ProvisioningInfo"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error",
+            "Result"
+          ]
         },
-        "WatchMachineErrorRetry": {
+        "ProvisioningInfoResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ProvisioningInfoResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "WatchModelMachines": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResult"
-            }
-          }
-        }
-      },
-      "definitions": {
-        "APIHostPortsResult": {
+        "SetStatus": {
           "type": "object",
           "properties": {
-            "Servers": {
+            "Entities": {
               "type": "array",
               "items": {
-                "type": "array",
-                "items": {
-                  "$ref": "#/definitions/HostPort"
-                }
+                "$ref": "#/definitions/EntityStatusArgs"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Servers"
+            "Entities"
           ]
         },
-        "Address": {
+        "Settings": {
           "type": "object",
           "properties": {
-            "Scope": {
+            "Ftp": {
               "type": "string"
             },
-            "SpaceName": {
+            "Http": {
               "type": "string"
             },
-            "Type": {
+            "Https": {
               "type": "string"
             },
-            "Value": {
+            "NoProxy": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Value",
-            "Type",
-            "Scope"
+            "Http",
+            "Https",
+            "Ftp",
+            "NoProxy"
           ]
         },
-        "Binary": {
+        "StatusResult": {
           "type": "object",
           "properties": {
-            "Arch": {
+            "Data": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Id": {
               "type": "string"
             },
-            "Number": {
-              "$ref": "#/definitions/Number"
+            "Info": {
+              "type": "string"
             },
-            "Series": {
+            "Life": {
+              "type": "string"
+            },
+            "Since": {
+              "type": "string",
+              "format": "date-time"
+            },
+            "Status": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Number",
-            "Series",
-            "Arch"
+            "Error",
+            "Id",
+            "Life",
+            "Status",
+            "Info",
+            "Data",
+            "Since"
           ]
         },
-        "BytesResult": {
+        "StatusResults": {
           "type": "object",
           "properties": {
-            "Result": {
+            "Results": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "$ref": "#/definitions/StatusResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Result"
+            "Results"
           ]
         },
-        "CloudImageMetadata": {
+        "StringResult": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "image_id": {
-              "type": "string"
-            },
-            "priority": {
-              "type": "integer"
-            },
-            "region": {
-              "type": "string"
-            },
-            "root_storage_size": {
-              "type": "integer"
-            },
-            "root_storage_type": {
-              "type": "string"
-            },
-            "series": {
-              "type": "string"
-            },
-            "source": {
-              "type": "string"
-            },
-            "stream": {
-              "type": "string"
-            },
-            "version": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "virt_type": {
+            "Result": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "image_id",
-            "region",
-            "version",
-            "series",
-            "arch",
-            "source",
-            "priority"
+            "Error",
+            "Result"
           ]
         },
-        "ConstraintsResult": {
+        "StringResults": {
           "type": "object",
           "properties": {
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Constraints"
+            "Results"
           ]
         },
-        "ConstraintsResults": {
+        "StringsResult": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Result": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ConstraintsResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Error",
+            "Result"
           ]
         },
-        "ContainerConfig": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
-            "AllowLXCLoopMounts": {
-              "type": "boolean"
-            },
-            "AptMirror": {
-              "type": "string"
-            },
-            "AptProxy": {
-              "$ref": "#/definitions/Settings"
+            "Changes": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             },
-            "AuthorizedKeys": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "ProviderType": {
+            "StringsWatcherId": {
               "type": "string"
-            },
-            "Proxy": {
-              "$ref": "#/definitions/Settings"
-            },
-            "SSLHostnameVerification": {
-              "type": "boolean"
-            },
-            "UpdateBehavior": {
-              "$ref": "#/definitions/UpdateBehavior"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ProviderType",
-            "AuthorizedKeys",
-            "SSLHostnameVerification",
-            "Proxy",
-            "AptProxy",
-            "AptMirror",
-            "AllowLXCLoopMounts",
-            "UpdateBehavior"
+            "StringsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "ContainerManagerConfig": {
+        "StringsWatchResults": {
           "type": "object",
           "properties": {
-            "ManagerConfig": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/StringsWatchResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "ManagerConfig"
+            "Results"
           ]
         },
-        "ContainerManagerConfigParams": {
+        "Tools": {
           "type": "object",
           "properties": {
-            "Type": {
+            "sha256": {
               "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "url": {
+              "type": "string"
+            },
+            "version": {
+              "$ref": "#/definitions/Binary"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Type"
+            "version",
+            "url",
+            "size"
           ]
         },
-        "DistributionGroupResult": {
+        "ToolsResult": {
           "type": "object",
           "properties": {
+            "DisableSSLHostnameVerification": {
+              "type": "boolean"
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
+            "ToolsList": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/Tools"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "ToolsList",
+            "DisableSSLHostnameVerification",
+            "Error"
           ]
         },
-        "DistributionGroupResults": {
+        "ToolsResults": {
           "type": "object",
           "properties": {
             "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/DistributionGroupResult"
+                "$ref": "#/definitions/ToolsResult"
               }
             }
           },
             "Results"
           ]
         },
-        "Entities": {
+        "UpdateBehavior": {
           "type": "object",
           "properties": {
-            "Entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Entity"
-              }
+            "EnableOSRefreshUpdate": {
+              "type": "boolean"
+            },
+            "EnableOSUpgrade": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "EnableOSRefreshUpdate",
+            "EnableOSUpgrade"
           ]
         },
-        "Entity": {
+        "Value": {
           "type": "object",
           "properties": {
-            "Tag": {
+            "arch": {
               "type": "string"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Tag"
-          ]
-        },
-        "EntityPassword": {
-          "type": "object",
-          "properties": {
-            "Password": {
+            },
+            "container": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
               "type": "string"
             },
-            "Tag": {
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "virt-type": {
               "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Password"
-          ]
+          "additionalProperties": false
         },
-        "EntityPasswords": {
+        "Volume": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityPassword"
-              }
+            "info": {
+              "$ref": "#/definitions/VolumeInfo"
+            },
+            "volumetag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Changes"
+            "volumetag",
+            "info"
           ]
         },
-        "EntityStatusArgs": {
+        "VolumeAttachmentInfo": {
           "type": "object",
           "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Info": {
+            "busaddress": {
               "type": "string"
             },
-            "Status": {
+            "devicelink": {
               "type": "string"
             },
-            "Tag": {
+            "devicename": {
               "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Tag",
-            "Status",
-            "Info",
-            "Data"
-          ]
+          "additionalProperties": false
         },
-        "Error": {
+        "VolumeAttachmentParams": {
           "type": "object",
           "properties": {
-            "Code": {
+            "instanceid": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "machinetag": {
+              "type": "string"
             },
-            "Message": {
+            "provider": {
+              "type": "string"
+            },
+            "read-only": {
+              "type": "boolean"
+            },
+            "volumeid": {
+              "type": "string"
+            },
+            "volumetag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "volumetag",
+            "machinetag",
+            "provider"
           ]
         },
-        "ErrorInfo": {
+        "VolumeInfo": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
+            "hardwareid": {
+              "type": "string"
             },
-            "MacaroonPath": {
+            "persistent": {
+              "type": "boolean"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "volumeid": {
               "type": "string"
             }
           },
-          "additionalProperties": false
-        },
-        "ErrorResult": {
-          "type": "object",
-          "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "volumeid",
+            "size",
+            "persistent"
           ]
         },
-        "ErrorResults": {
+        "VolumeParams": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ErrorResult"
+            "attachment": {
+              "$ref": "#/definitions/VolumeAttachmentParams"
+            },
+            "attributes": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "provider": {
+              "type": "string"
+            },
+            "size": {
+              "type": "integer"
+            },
+            "tags": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
               }
+            },
+            "volumetag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "volumetag",
+            "size",
+            "provider"
           ]
         },
-        "FindToolsParams": {
+        "WatchContainer": {
           "type": "object",
           "properties": {
-            "Arch": {
+            "ContainerType": {
               "type": "string"
             },
-            "MajorVersion": {
-              "type": "integer"
-            },
-            "MinorVersion": {
-              "type": "integer"
-            },
-            "Number": {
-              "$ref": "#/definitions/Number"
-            },
-            "Series": {
+            "MachineTag": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Number",
-            "MajorVersion",
-            "MinorVersion",
-            "Arch",
-            "Series"
+            "MachineTag",
+            "ContainerType"
           ]
         },
-        "FindToolsResult": {
+        "WatchContainers": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "List": {
+            "Params": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Tools"
+                "$ref": "#/definitions/WatchContainer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "List",
-            "Error"
+            "Params"
           ]
         },
-        "HardwareCharacteristics": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Arch": {
-              "type": "string"
-            },
-            "AvailabilityZone": {
-              "type": "string"
-            },
-            "CpuCores": {
-              "type": "integer"
-            },
-            "CpuPower": {
-              "type": "integer"
-            },
-            "Mem": {
-              "type": "integer"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "RootDisk": {
-              "type": "integer"
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Tags": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "location",
+            "caveatId",
+            "verificationId"
+          ]
         },
-        "HostPort": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Address": {
-              "$ref": "#/definitions/Address"
+            "headerLen": {
+              "type": "integer"
             },
-            "Port": {
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
               "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Address",
-            "Port"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
-        },
-        "InstanceInfo": {
-          "type": "object",
-          "properties": {
-            "Characteristics": {
-              "$ref": "#/definitions/HardwareCharacteristics"
-            },
-            "InstanceId": {
-              "type": "string"
-            },
-            "NetworkConfig": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/NetworkConfig"
-              }
-            },
-            "Nonce": {
-              "type": "string"
-            },
-            "Tag": {
-              "type": "string"
+        }
+      }
+    }
+  },
+  {
+    "Name": "ProxyUpdater",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "VolumeAttachments": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/VolumeAttachmentInfo"
-                }
-              }
+            "Result": {
+              "$ref": "#/definitions/ProxyConfigResults"
+            }
+          }
+        },
+        "WatchForProxyConfigAndAPIHostPortChanges": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
             },
-            "Volumes": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Volume"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag",
-            "InstanceId",
-            "Nonce",
-            "Characteristics",
-            "Volumes",
-            "VolumeAttachments",
-            "NetworkConfig"
+            "Entities"
           ]
         },
-        "InstancesInfo": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Machines": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/InstanceInfo"
-              }
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Machines"
+            "Tag"
           ]
         },
-        "LifeResult": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Code": {
+              "type": "string"
             },
-            "Life": {
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Life",
-            "Error"
+            "Message",
+            "Code"
           ]
         },
-        "LifeResults": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/LifeResult"
-              }
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
+            },
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          "additionalProperties": false
         },
         "Macaroon": {
           "type": "object",
             "sig"
           ]
         },
-        "MachineContainers": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "ContainerTypes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "MachineTag": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineTag",
-            "ContainerTypes"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "MachineContainersParams": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "Params": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachineContainers"
+                "$ref": "#/definitions/NotifyWatchResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Params"
+            "Results"
           ]
         },
-        "MachineNetworkConfigResult": {
+        "ProxyConfig": {
+          "type": "object",
+          "properties": {
+            "FTP": {
+              "type": "string"
+            },
+            "HTTP": {
+              "type": "string"
+            },
+            "HTTPS": {
+              "type": "string"
+            },
+            "NoProxy": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "HTTP",
+            "HTTPS",
+            "FTP",
+            "NoProxy"
+          ]
+        },
+        "ProxyConfigResult": {
           "type": "object",
           "properties": {
+            "APTProxySettings": {
+              "$ref": "#/definitions/ProxyConfig"
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Info": {
+            "ProxySettings": {
+              "$ref": "#/definitions/ProxyConfig"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ProxySettings",
+            "APTProxySettings"
+          ]
+        },
+        "ProxyConfigResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NetworkConfig"
+                "$ref": "#/definitions/ProxyConfigResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Info"
+            "Results"
           ]
         },
-        "MachineNetworkConfigResults": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Results": {
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "location",
+            "caveatId",
+            "verificationId"
+          ]
+        },
+        "packet": {
+          "type": "object",
+          "properties": {
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "start",
+            "totalLen",
+            "headerLen"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Reboot",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ClearReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "GetRebootAction": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/RebootActionResults"
+            }
+          }
+        },
+        "RequestReboot": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "WatchForRebootEvent": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResult"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
+          "type": "object",
+          "properties": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/MachineNetworkConfigResult"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Entities"
           ]
         },
-        "ModelConfigResult": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "Config": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "Tag": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Config"
+            "Tag"
           ]
         },
-        "NetworkConfig": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Address": {
-              "type": "string"
-            },
-            "CIDR": {
-              "type": "string"
-            },
-            "ConfigType": {
-              "type": "string"
-            },
-            "DNSSearchDomains": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "DNSServers": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            },
-            "DeviceIndex": {
-              "type": "integer"
-            },
-            "Disabled": {
-              "type": "boolean"
-            },
-            "GatewayAddress": {
-              "type": "string"
-            },
-            "InterfaceName": {
-              "type": "string"
-            },
-            "InterfaceType": {
-              "type": "string"
-            },
-            "MACAddress": {
-              "type": "string"
-            },
-            "MTU": {
-              "type": "integer"
-            },
-            "NoAutoStart": {
-              "type": "boolean"
-            },
-            "ParentInterfaceName": {
-              "type": "string"
-            },
-            "ProviderAddressId": {
-              "type": "string"
-            },
-            "ProviderId": {
-              "type": "string"
-            },
-            "ProviderSpaceId": {
+            "Code": {
               "type": "string"
             },
-            "ProviderSubnetId": {
-              "type": "string"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "ProviderVLANId": {
+            "Message": {
               "type": "string"
-            },
-            "VLANTag": {
-              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "DeviceIndex",
-            "MACAddress",
-            "CIDR",
-            "MTU",
-            "ProviderId",
-            "ProviderSubnetId",
-            "ProviderSpaceId",
-            "ProviderAddressId",
-            "ProviderVLANId",
-            "VLANTag",
-            "InterfaceName",
-            "ParentInterfaceName",
-            "InterfaceType",
-            "Disabled"
+            "Message",
+            "Code"
           ]
         },
-        "NotifyWatchResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "NotifyWatcherId": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
+          "additionalProperties": false
+        },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
             "Error"
           ]
         },
-        "Number": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Build": {
-              "type": "integer"
-            },
-            "Major": {
-              "type": "integer"
-            },
-            "Minor": {
-              "type": "integer"
-            },
-            "Patch": {
-              "type": "integer"
-            },
-            "Tag": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Major",
-            "Minor",
-            "Tag",
-            "Patch",
-            "Build"
+            "Results"
           ]
         },
-        "ProvisioningInfo": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "Constraints": {
-              "$ref": "#/definitions/Value"
-            },
-            "EndpointBindings": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
-            },
-            "ImageMetadata": {
+            "caveats": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/CloudImageMetadata"
+                "$ref": "#/definitions/caveat"
               }
             },
-            "Jobs": {
+            "data": {
               "type": "array",
               "items": {
-                "type": "string"
+                "type": "integer"
               }
             },
-            "Placement": {
-              "type": "string"
-            },
-            "Series": {
-              "type": "string"
-            },
-            "SubnetsToZones": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
-                }
-              }
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Volumes": {
+            "sig": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/VolumeParams"
+                "type": "integer"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Constraints",
-            "Series",
-            "Placement",
-            "Jobs",
-            "Volumes",
-            "Tags",
-            "SubnetsToZones",
-            "ImageMetadata",
-            "EndpointBindings"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "ProvisioningInfoResult": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
-              "$ref": "#/definitions/ProvisioningInfo"
+            "NotifyWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "ProvisioningInfoResults": {
+        "RebootActionResult": {
           "type": "object",
           "properties": {
-            "Results": {
+            "error": {
+              "$ref": "#/definitions/Error"
+            },
+            "result": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "RebootActionResults": {
+          "type": "object",
+          "properties": {
+            "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ProvisioningInfoResult"
+                "$ref": "#/definitions/RebootActionResult"
               }
             }
           },
+          "additionalProperties": false
+        },
+        "caveat": {
+          "type": "object",
+          "properties": {
+            "caveatId": {
+              "$ref": "#/definitions/packet"
+            },
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
+            }
+          },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "SetStatus": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Entities": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/EntityStatusArgs"
-              }
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "RelationUnitsWatcher",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Next": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/RelationUnitsWatchResult"
+            }
+          }
         },
-        "Settings": {
+        "Stop": {
+          "type": "object"
+        }
+      },
+      "definitions": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Ftp": {
-              "type": "string"
-            },
-            "Http": {
+            "Code": {
               "type": "string"
             },
-            "Https": {
-              "type": "string"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "NoProxy": {
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Http",
-            "Https",
-            "Ftp",
-            "NoProxy"
+            "Message",
+            "Code"
           ]
         },
-        "StatusResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "Data": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "Id": {
+            "MacaroonPath": {
               "type": "string"
+            }
+          },
+          "additionalProperties": false
+        },
+        "Macaroon": {
+          "type": "object",
+          "properties": {
+            "caveats": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/caveat"
+              }
             },
-            "Info": {
-              "type": "string"
+            "data": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "Life": {
-              "type": "string"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "Since": {
-              "type": "string",
-              "format": "date-time"
+            "location": {
+              "$ref": "#/definitions/packet"
             },
-            "Status": {
-              "type": "string"
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Id",
-            "Life",
-            "Status",
-            "Info",
-            "Data",
-            "Since"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "StatusResults": {
+        "RelationUnitsChange": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Changed": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/UnitSettings"
+                }
+              }
+            },
+            "Departed": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StatusResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Changed",
+            "Departed"
           ]
         },
-        "StringResult": {
+        "RelationUnitsWatchResult": {
           "type": "object",
           "properties": {
+            "Changes": {
+              "$ref": "#/definitions/RelationUnitsChange"
+            },
             "Error": {
               "$ref": "#/definitions/Error"
             },
-            "Result": {
+            "RelationUnitsWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "RelationUnitsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
-        "StringResults": {
+        "UnitSettings": {
           "type": "object",
           "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/StringResult"
-              }
+            "Version": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Version"
           ]
         },
-        "StringsResult": {
+        "caveat": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "caveatId": {
+              "$ref": "#/definitions/packet"
             },
-            "Result": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "verificationId": {
+              "$ref": "#/definitions/packet"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error",
-            "Result"
+            "location",
+            "caveatId",
+            "verificationId"
           ]
         },
-        "StringsWatchResult": {
+        "packet": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
+            "headerLen": {
+              "type": "integer"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "start": {
+              "type": "integer"
             },
-            "StringsWatcherId": {
-              "type": "string"
+            "totalLen": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "StringsWatcherId",
-            "Changes",
-            "Error"
+            "start",
+            "totalLen",
+            "headerLen"
           ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Resumer",
+    "Version": 2,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "ResumeTransactions": {
+          "type": "object"
+        }
+      }
+    }
+  },
+  {
+    "Name": "RetryStrategy",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "RetryStrategy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/RetryStrategyResults"
+            }
+          }
         },
-        "StringsWatchResults": {
+        "WatchRetryStrategy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/NotifyWatchResults"
+            }
+          }
+        }
+      },
+      "definitions": {
+        "Entities": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Entities": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/StringsWatchResult"
+                "$ref": "#/definitions/Entity"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Entities"
           ]
         },
-        "Tools": {
+        "Entity": {
           "type": "object",
           "properties": {
-            "sha256": {
-              "type": "string"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "url": {
+            "Tag": {
               "type": "string"
-            },
-            "version": {
-              "$ref": "#/definitions/Binary"
             }
           },
           "additionalProperties": false,
           "required": [
-            "version",
-            "url",
-            "size"
+            "Tag"
           ]
         },
-        "ToolsResult": {
+        "Error": {
           "type": "object",
           "properties": {
-            "DisableSSLHostnameVerification": {
-              "type": "boolean"
+            "Code": {
+              "type": "string"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
             },
-            "ToolsList": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/Tools"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "ToolsList",
-            "DisableSSLHostnameVerification",
-            "Error"
-          ]
-        },
-        "ToolsResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ToolsResult"
-              }
+            "Message": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Message",
+            "Code"
           ]
         },
-        "UpdateBehavior": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "EnableOSRefreshUpdate": {
-              "type": "boolean"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "EnableOSUpgrade": {
-              "type": "boolean"
+            "MacaroonPath": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "EnableOSRefreshUpdate",
-            "EnableOSUpgrade"
-          ]
+          "additionalProperties": false
         },
-        "Value": {
+        "Macaroon": {
           "type": "object",
           "properties": {
-            "arch": {
-              "type": "string"
-            },
-            "container": {
-              "type": "string"
-            },
-            "cpu-cores": {
-              "type": "integer"
-            },
-            "cpu-power": {
-              "type": "integer"
-            },
-            "instance-type": {
-              "type": "string"
-            },
-            "mem": {
-              "type": "integer"
-            },
-            "root-disk": {
-              "type": "integer"
-            },
-            "spaces": {
+            "caveats": {
               "type": "array",
               "items": {
-                "type": "string"
+                "$ref": "#/definitions/caveat"
               }
             },
-            "tags": {
+            "data": {
               "type": "array",
               "items": {
-                "type": "string"
+                "type": "integer"
               }
             },
-            "virt-type": {
-              "type": "string"
-            }
-          },
-          "additionalProperties": false
-        },
-        "Volume": {
-          "type": "object",
-          "properties": {
-            "info": {
-              "$ref": "#/definitions/VolumeInfo"
+            "id": {
+              "$ref": "#/definitions/packet"
             },
-            "volumetag": {
-              "type": "string"
+            "location": {
+              "$ref": "#/definitions/packet"
+            },
+            "sig": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "volumetag",
-            "info"
+            "data",
+            "location",
+            "id",
+            "caveats",
+            "sig"
           ]
         },
-        "VolumeAttachmentInfo": {
-          "type": "object",
-          "properties": {
-            "busaddress": {
-              "type": "string"
-            },
-            "devicelink": {
-              "type": "string"
-            },
-            "devicename": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false
-        },
-        "VolumeAttachmentParams": {
+        "NotifyWatchResult": {
           "type": "object",
           "properties": {
-            "instanceid": {
-              "type": "string"
-            },
-            "machinetag": {
-              "type": "string"
-            },
-            "provider": {
-              "type": "string"
-            },
-            "read-only": {
-              "type": "boolean"
-            },
-            "volumeid": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "volumetag": {
+            "NotifyWatcherId": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volumetag",
-            "machinetag",
-            "provider"
+            "NotifyWatcherId",
+            "Error"
           ]
         },
-        "VolumeInfo": {
+        "NotifyWatchResults": {
           "type": "object",
           "properties": {
-            "hardwareid": {
-              "type": "string"
-            },
-            "persistent": {
-              "type": "boolean"
-            },
-            "size": {
-              "type": "integer"
-            },
-            "volumeid": {
-              "type": "string"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/NotifyWatchResult"
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "volumeid",
-            "size",
-            "persistent"
+            "Results"
           ]
         },
-        "VolumeParams": {
+        "RetryStrategy": {
           "type": "object",
           "properties": {
-            "attachment": {
-              "$ref": "#/definitions/VolumeAttachmentParams"
-            },
-            "attributes": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "object",
-                  "additionalProperties": true
-                }
-              }
+            "JitterRetryTime": {
+              "type": "boolean"
             },
-            "provider": {
-              "type": "string"
+            "MaxRetryTime": {
+              "type": "integer"
             },
-            "size": {
+            "MinRetryTime": {
               "type": "integer"
             },
-            "tags": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "type": "string"
-                }
-              }
+            "RetryTimeFactor": {
+              "type": "integer"
             },
-            "volumetag": {
-              "type": "string"
+            "ShouldRetry": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "volumetag",
-            "size",
-            "provider"
+            "ShouldRetry",
+            "MinRetryTime",
+            "MaxRetryTime",
+            "JitterRetryTime",
+            "RetryTimeFactor"
           ]
         },
-        "WatchContainer": {
+        "RetryStrategyResult": {
           "type": "object",
           "properties": {
-            "ContainerType": {
-              "type": "string"
+            "Error": {
+              "$ref": "#/definitions/Error"
             },
-            "MachineTag": {
-              "type": "string"
+            "Result": {
+              "$ref": "#/definitions/RetryStrategy"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MachineTag",
-            "ContainerType"
+            "Error",
+            "Result"
           ]
         },
-        "WatchContainers": {
+        "RetryStrategyResults": {
           "type": "object",
           "properties": {
-            "Params": {
+            "Results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/WatchContainer"
+                "$ref": "#/definitions/RetryStrategyResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Params"
+            "Results"
           ]
         },
         "caveat": {
     }
   },
   {
-    "Name": "ProxyUpdater",
+    "Name": "SSHClient",
     "Version": 1,
     "Schema": {
       "type": "object",
       "properties": {
-        "ProxyConfig": {
+        "PrivateAddress": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ProxyConfigResults"
+              "$ref": "#/definitions/SSHAddressResults"
             }
           }
         },
-        "WatchForProxyConfigAndAPIHostPortChanges": {
+        "Proxy": {
+          "type": "object",
+          "properties": {
+            "Result": {
+              "$ref": "#/definitions/SSHProxyResult"
+            }
+          }
+        },
+        "PublicAddress": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+              "$ref": "#/definitions/SSHAddressResults"
+            }
+          }
+        },
+        "PublicKeys": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/SSHPublicKeysResults"
             }
           }
         }
             "sig"
           ]
         },
-        "NotifyWatchResult": {
+        "SSHAddressResult": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "NotifyWatcherId": {
+            "address": {
               "type": "string"
+            },
+            "error": {
+              "$ref": "#/definitions/Error"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "NotifyWatcherId",
-            "Error"
-          ]
+          "additionalProperties": false
         },
-        "NotifyWatchResults": {
+        "SSHAddressResults": {
           "type": "object",
           "properties": {
-            "Results": {
+            "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "$ref": "#/definitions/SSHAddressResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "results"
           ]
         },
-        "ProxyConfig": {
+        "SSHProxyResult": {
           "type": "object",
           "properties": {
-            "FTP": {
-              "type": "string"
-            },
-            "HTTP": {
-              "type": "string"
-            },
-            "HTTPS": {
-              "type": "string"
-            },
-            "NoProxy": {
-              "type": "string"
+            "use-proxy": {
+              "type": "boolean"
             }
           },
           "additionalProperties": false,
           "required": [
-            "HTTP",
-            "HTTPS",
-            "FTP",
-            "NoProxy"
+            "use-proxy"
           ]
         },
-        "ProxyConfigResult": {
+        "SSHPublicKeysResult": {
           "type": "object",
           "properties": {
-            "APTProxySettings": {
-              "$ref": "#/definitions/ProxyConfig"
-            },
-            "Error": {
+            "error": {
               "$ref": "#/definitions/Error"
             },
-            "ProxySettings": {
-              "$ref": "#/definitions/ProxyConfig"
+            "public-keys": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "ProxySettings",
-            "APTProxySettings"
-          ]
+          "additionalProperties": false
         },
-        "ProxyConfigResults": {
+        "SSHPublicKeysResults": {
           "type": "object",
           "properties": {
-            "Results": {
+            "results": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ProxyConfigResult"
+                "$ref": "#/definitions/SSHPublicKeysResult"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "results"
           ]
         },
         "caveat": {
             "verificationId": {
               "$ref": "#/definitions/packet"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "location",
-            "caveatId",
-            "verificationId"
-          ]
+          },
+          "additionalProperties": false,
+          "required": [
+            "location",
+            "caveatId",
+            "verificationId"
+          ]
+        },
+        "packet": {
+          "type": "object",
+          "properties": {
+            "headerLen": {
+              "type": "integer"
+            },
+            "start": {
+              "type": "integer"
+            },
+            "totalLen": {
+              "type": "integer"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "start",
+            "totalLen",
+            "headerLen"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "Service",
+    "Version": 3,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "AddRelation": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddRelation"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddRelationResults"
+            }
+          }
+        },
+        "AddUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/AddServiceUnits"
+            },
+            "Result": {
+              "$ref": "#/definitions/AddServiceUnitsResults"
+            }
+          }
+        },
+        "CharmRelations": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceCharmRelations"
+            },
+            "Result": {
+              "$ref": "#/definitions/ServiceCharmRelationsResults"
+            }
+          }
+        },
+        "Deploy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServicesDeploy"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
+        "Destroy": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceDestroy"
+            }
+          }
+        },
+        "DestroyRelation": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyRelation"
+            }
+          }
+        },
+        "DestroyUnits": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/DestroyServiceUnits"
+            }
+          }
+        },
+        "Expose": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceExpose"
+            }
+          }
+        },
+        "Get": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceGet"
+            },
+            "Result": {
+              "$ref": "#/definitions/ServiceGetResults"
+            }
+          }
+        },
+        "GetCharmURL": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceGet"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringResult"
+            }
+          }
+        },
+        "GetConstraints": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/GetServiceConstraints"
+            },
+            "Result": {
+              "$ref": "#/definitions/GetConstraintsResults"
+            }
+          }
+        },
+        "Set": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceSet"
+            }
+          }
+        },
+        "SetCharm": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/ServiceSetCharm"
+            }
+          }
         },
-        "packet": {
+        "SetConstraints": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
+            "Params": {
+              "$ref": "#/definitions/SetConstraints"
             }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Reboot",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ClearReboot": {
+          }
+        },
+        "SetMetricCredentials": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
+              "$ref": "#/definitions/ServiceMetricCredentials"
             },
             "Result": {
               "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "GetRebootAction": {
+        "Unexpose": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/RebootActionResults"
+              "$ref": "#/definitions/ServiceUnexpose"
             }
           }
         },
-        "RequestReboot": {
+        "Unset": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/ServiceUnset"
             }
           }
         },
-        "WatchForRebootEvent": {
+        "Update": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResult"
+            "Params": {
+              "$ref": "#/definitions/ServiceUpdate"
             }
           }
         }
       },
       "definitions": {
-        "Entities": {
+        "AddRelation": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Endpoints": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Endpoints"
           ]
         },
-        "Entity": {
+        "AddRelationResults": {
           "type": "object",
           "properties": {
-            "Tag": {
-              "type": "string"
+            "Endpoints": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Relation"
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "Endpoints"
           ]
         },
-        "Error": {
+        "AddServiceUnits": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
+            "NumUnits": {
+              "type": "integer"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "Placement": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Placement"
+              }
             },
-            "Message": {
+            "ServiceName": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "ServiceName",
+            "NumUnits",
+            "Placement"
           ]
         },
-        "ErrorInfo": {
+        "AddServiceUnitsResults": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
-              "type": "string"
+            "Units": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "Units"
+          ]
         },
-        "ErrorResult": {
+        "Constraints": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Count": {
+              "type": "integer"
+            },
+            "Pool": {
+              "type": "string"
+            },
+            "Size": {
+              "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Error"
+            "Pool",
+            "Size",
+            "Count"
           ]
         },
-        "ErrorResults": {
+        "DestroyRelation": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Endpoints": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/ErrorResult"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Endpoints"
           ]
         },
-        "Macaroon": {
+        "DestroyServiceUnits": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
-            },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
+            "UnitNames": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "UnitNames"
           ]
         },
-        "NotifyWatchResult": {
+        "Error": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "Code": {
+              "type": "string"
             },
-            "NotifyWatcherId": {
+            "Info": {
+              "$ref": "#/definitions/ErrorInfo"
+            },
+            "Message": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "Message",
+            "Code"
           ]
         },
-        "RebootActionResult": {
+        "ErrorInfo": {
           "type": "object",
           "properties": {
-            "error": {
-              "$ref": "#/definitions/Error"
+            "Macaroon": {
+              "$ref": "#/definitions/Macaroon"
             },
-            "result": {
+            "MacaroonPath": {
               "type": "string"
             }
           },
           "additionalProperties": false
         },
-        "RebootActionResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/RebootActionResult"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "caveat": {
+        "ErrorResult": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "Error": {
+              "$ref": "#/definitions/Error"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "Error"
           ]
         },
-        "packet": {
-          "type": "object",
-          "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "RelationUnitsWatcher",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "Next": {
+        "ErrorResults": {
           "type": "object",
           "properties": {
-            "Result": {
-              "$ref": "#/definitions/RelationUnitsWatchResult"
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
         },
-        "Stop": {
-          "type": "object"
-        }
-      },
-      "definitions": {
-        "Error": {
+        "GetConstraintsResults": {
           "type": "object",
           "properties": {
-            "Code": {
-              "type": "string"
-            },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
-            },
-            "Message": {
-              "type": "string"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "Constraints"
           ]
         },
-        "ErrorInfo": {
+        "GetServiceConstraints": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
+            "ServiceName": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "ServiceName"
+          ]
         },
         "Macaroon": {
           "type": "object",
             "sig"
           ]
         },
-        "RelationUnitsChange": {
+        "Placement": {
           "type": "object",
           "properties": {
-            "Changed": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/UnitSettings"
-                }
-              }
+            "Directive": {
+              "type": "string"
             },
-            "Departed": {
+            "Scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Scope",
+            "Directive"
+          ]
+        },
+        "Relation": {
+          "type": "object",
+          "properties": {
+            "Interface": {
+              "type": "string"
+            },
+            "Limit": {
+              "type": "integer"
+            },
+            "Name": {
+              "type": "string"
+            },
+            "Optional": {
+              "type": "boolean"
+            },
+            "Role": {
+              "type": "string"
+            },
+            "Scope": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Name",
+            "Role",
+            "Interface",
+            "Optional",
+            "Limit",
+            "Scope"
+          ]
+        },
+        "ServiceCharmRelations": {
+          "type": "object",
+          "properties": {
+            "ServiceName": {
+              "type": "string"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "ServiceName"
+          ]
+        },
+        "ServiceCharmRelationsResults": {
+          "type": "object",
+          "properties": {
+            "CharmRelations": {
               "type": "array",
               "items": {
                 "type": "string"
           },
           "additionalProperties": false,
           "required": [
-            "Changed",
-            "Departed"
+            "CharmRelations"
           ]
         },
-        "RelationUnitsWatchResult": {
+        "ServiceDeploy": {
           "type": "object",
           "properties": {
-            "Changes": {
-              "$ref": "#/definitions/RelationUnitsChange"
+            "Channel": {
+              "type": "string"
             },
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "CharmUrl": {
+              "type": "string"
             },
-            "RelationUnitsWatcherId": {
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "ConfigYAML": {
+              "type": "string"
+            },
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "EndpointBindings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "NumUnits": {
+              "type": "integer"
+            },
+            "Placement": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Placement"
+              }
+            },
+            "Resources": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "Series": {
               "type": "string"
+            },
+            "ServiceName": {
+              "type": "string"
+            },
+            "Storage": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/Constraints"
+                }
+              }
             }
           },
           "additionalProperties": false,
           "required": [
-            "RelationUnitsWatcherId",
-            "Changes",
-            "Error"
+            "ServiceName",
+            "Series",
+            "CharmUrl",
+            "Channel",
+            "NumUnits",
+            "Config",
+            "ConfigYAML",
+            "Constraints",
+            "Placement",
+            "Storage",
+            "EndpointBindings",
+            "Resources"
           ]
         },
-        "UnitSettings": {
+        "ServiceDestroy": {
           "type": "object",
           "properties": {
-            "Version": {
-              "type": "integer"
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Version"
+            "ServiceName"
           ]
         },
-        "caveat": {
+        "ServiceExpose": {
           "type": "object",
           "properties": {
-            "caveatId": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "verificationId": {
-              "$ref": "#/definitions/packet"
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "location",
-            "caveatId",
-            "verificationId"
+            "ServiceName"
           ]
         },
-        "packet": {
+        "ServiceGet": {
           "type": "object",
           "properties": {
-            "headerLen": {
-              "type": "integer"
-            },
-            "start": {
-              "type": "integer"
-            },
-            "totalLen": {
-              "type": "integer"
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "start",
-            "totalLen",
-            "headerLen"
+            "ServiceName"
           ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "Resumer",
-    "Version": 2,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "ResumeTransactions": {
-          "type": "object"
-        }
-      }
-    }
-  },
-  {
-    "Name": "RetryStrategy",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "RetryStrategy": {
+        },
+        "ServiceGetResults": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "Charm": {
+              "type": "string"
             },
-            "Result": {
-              "$ref": "#/definitions/RetryStrategyResults"
+            "Config": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "object",
+                  "additionalProperties": true
+                }
+              }
+            },
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "Service": {
+              "type": "string"
             }
-          }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Service",
+            "Charm",
+            "Config",
+            "Constraints"
+          ]
         },
-        "WatchRetryStrategy": {
+        "ServiceMetricCredential": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
+            "MetricCredentials": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
             },
-            "Result": {
-              "$ref": "#/definitions/NotifyWatchResults"
+            "ServiceName": {
+              "type": "string"
             }
-          }
-        }
-      },
-      "definitions": {
-        "Entities": {
+          },
+          "additionalProperties": false,
+          "required": [
+            "ServiceName",
+            "MetricCredentials"
+          ]
+        },
+        "ServiceMetricCredentials": {
           "type": "object",
           "properties": {
-            "Entities": {
+            "Creds": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/Entity"
+                "$ref": "#/definitions/ServiceMetricCredential"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Entities"
+            "Creds"
           ]
         },
-        "Entity": {
+        "ServiceSet": {
           "type": "object",
           "properties": {
-            "Tag": {
+            "Options": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "ServiceName": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Tag"
+            "ServiceName",
+            "Options"
           ]
         },
-        "Error": {
+        "ServiceSetCharm": {
           "type": "object",
           "properties": {
-            "Code": {
+            "charmurl": {
               "type": "string"
             },
-            "Info": {
-              "$ref": "#/definitions/ErrorInfo"
+            "cs-channel": {
+              "type": "string"
             },
-            "Message": {
+            "forceseries": {
+              "type": "boolean"
+            },
+            "forceunits": {
+              "type": "boolean"
+            },
+            "resourceids": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "servicename": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "Message",
-            "Code"
+            "servicename",
+            "charmurl",
+            "cs-channel",
+            "forceunits",
+            "forceseries",
+            "resourceids"
           ]
         },
-        "ErrorInfo": {
+        "ServiceUnexpose": {
           "type": "object",
           "properties": {
-            "Macaroon": {
-              "$ref": "#/definitions/Macaroon"
-            },
-            "MacaroonPath": {
+            "ServiceName": {
               "type": "string"
             }
           },
-          "additionalProperties": false
+          "additionalProperties": false,
+          "required": [
+            "ServiceName"
+          ]
         },
-        "Macaroon": {
+        "ServiceUnset": {
           "type": "object",
           "properties": {
-            "caveats": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/caveat"
-              }
-            },
-            "data": {
+            "Options": {
               "type": "array",
               "items": {
-                "type": "integer"
+                "type": "string"
               }
             },
-            "id": {
-              "$ref": "#/definitions/packet"
-            },
-            "location": {
-              "$ref": "#/definitions/packet"
-            },
-            "sig": {
-              "type": "array",
-              "items": {
-                "type": "integer"
-              }
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "data",
-            "location",
-            "id",
-            "caveats",
-            "sig"
+            "ServiceName",
+            "Options"
           ]
         },
-        "NotifyWatchResult": {
+        "ServiceUpdate": {
           "type": "object",
           "properties": {
-            "Error": {
-              "$ref": "#/definitions/Error"
+            "CharmUrl": {
+              "type": "string"
             },
-            "NotifyWatcherId": {
+            "Constraints": {
+              "$ref": "#/definitions/Value"
+            },
+            "ForceCharmUrl": {
+              "type": "boolean"
+            },
+            "ForceSeries": {
+              "type": "boolean"
+            },
+            "MinUnits": {
+              "type": "integer"
+            },
+            "ServiceName": {
+              "type": "string"
+            },
+            "SettingsStrings": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "type": "string"
+                }
+              }
+            },
+            "SettingsYAML": {
               "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "NotifyWatcherId",
-            "Error"
+            "ServiceName",
+            "CharmUrl",
+            "ForceCharmUrl",
+            "ForceSeries",
+            "MinUnits",
+            "SettingsStrings",
+            "SettingsYAML",
+            "Constraints"
           ]
         },
-        "NotifyWatchResults": {
+        "ServicesDeploy": {
           "type": "object",
           "properties": {
-            "Results": {
+            "Services": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/NotifyWatchResult"
+                "$ref": "#/definitions/ServiceDeploy"
               }
             }
           },
           "additionalProperties": false,
           "required": [
-            "Results"
+            "Services"
           ]
         },
-        "RetryStrategy": {
+        "SetConstraints": {
           "type": "object",
           "properties": {
-            "JitterRetryTime": {
-              "type": "boolean"
-            },
-            "MaxRetryTime": {
-              "type": "integer"
-            },
-            "MinRetryTime": {
-              "type": "integer"
-            },
-            "RetryTimeFactor": {
-              "type": "integer"
+            "Constraints": {
+              "$ref": "#/definitions/Value"
             },
-            "ShouldRetry": {
-              "type": "boolean"
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ShouldRetry",
-            "MinRetryTime",
-            "MaxRetryTime",
-            "JitterRetryTime",
-            "RetryTimeFactor"
+            "ServiceName",
+            "Constraints"
           ]
         },
-        "RetryStrategyResult": {
+        "StringResult": {
           "type": "object",
           "properties": {
             "Error": {
               "$ref": "#/definitions/Error"
             },
             "Result": {
-              "$ref": "#/definitions/RetryStrategy"
+              "type": "string"
             }
           },
           "additionalProperties": false,
             "Result"
           ]
         },
-        "RetryStrategyResults": {
+        "Value": {
           "type": "object",
           "properties": {
-            "Results": {
+            "arch": {
+              "type": "string"
+            },
+            "container": {
+              "type": "string"
+            },
+            "cpu-cores": {
+              "type": "integer"
+            },
+            "cpu-power": {
+              "type": "integer"
+            },
+            "instance-type": {
+              "type": "string"
+            },
+            "mem": {
+              "type": "integer"
+            },
+            "root-disk": {
+              "type": "integer"
+            },
+            "spaces": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/RetryStrategyResult"
+                "type": "string"
+              }
+            },
+            "tags": {
+              "type": "array",
+              "items": {
+                "type": "string"
               }
+            },
+            "virt-type": {
+              "type": "string"
             }
           },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
+          "additionalProperties": false
         },
         "caveat": {
           "type": "object",
           "additionalProperties": false,
           "required": [
             "start",
-            "totalLen",
-            "headerLen"
-          ]
-        }
-      }
-    }
-  },
-  {
-    "Name": "SSHClient",
-    "Version": 1,
-    "Schema": {
-      "type": "object",
-      "properties": {
-        "PrivateAddress": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/SSHAddressResults"
-            }
-          }
-        },
-        "Proxy": {
-          "type": "object",
-          "properties": {
-            "Result": {
-              "$ref": "#/definitions/SSHProxyResult"
-            }
-          }
-        },
-        "PublicAddress": {
+            "totalLen",
+            "headerLen"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "Name": "ServiceScaler",
+    "Version": 1,
+    "Schema": {
+      "type": "object",
+      "properties": {
+        "Rescale": {
           "type": "object",
           "properties": {
             "Params": {
               "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/SSHAddressResults"
+              "$ref": "#/definitions/ErrorResults"
             }
           }
         },
-        "PublicKeys": {
+        "Watch": {
           "type": "object",
           "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
             "Result": {
-              "$ref": "#/definitions/SSHPublicKeysResults"
+              "$ref": "#/definitions/StringsWatchResult"
             }
           }
         }
           },
           "additionalProperties": false
         },
+        "ErrorResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Error"
+          ]
+        },
+        "ErrorResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ErrorResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
         "Macaroon": {
           "type": "object",
           "properties": {
             "sig"
           ]
         },
-        "SSHAddressResult": {
-          "type": "object",
-          "properties": {
-            "address": {
-              "type": "string"
-            },
-            "error": {
-              "$ref": "#/definitions/Error"
-            }
-          },
-          "additionalProperties": false
-        },
-        "SSHAddressResults": {
+        "StringsWatchResult": {
           "type": "object",
           "properties": {
-            "results": {
+            "Changes": {
               "type": "array",
               "items": {
-                "$ref": "#/definitions/SSHAddressResult"
+                "type": "string"
               }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "results"
-          ]
-        },
-        "SSHProxyResult": {
-          "type": "object",
-          "properties": {
-            "use-proxy": {
-              "type": "boolean"
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "use-proxy"
-          ]
-        },
-        "SSHPublicKeysResult": {
-          "type": "object",
-          "properties": {
-            "error": {
+            },
+            "Error": {
               "$ref": "#/definitions/Error"
             },
-            "public-keys": {
-              "type": "array",
-              "items": {
-                "type": "string"
-              }
-            }
-          },
-          "additionalProperties": false
-        },
-        "SSHPublicKeysResults": {
-          "type": "object",
-          "properties": {
-            "results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/SSHPublicKeysResult"
-              }
+            "StringsWatcherId": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "results"
+            "StringsWatcherId",
+            "Changes",
+            "Error"
           ]
         },
         "caveat": {
         "StatusHistoryPruneArgs": {
           "type": "object",
           "properties": {
-            "MaxHistoryMB": {
-              "type": "integer"
-            },
-            "MaxHistoryTime": {
+            "MaxLogsPerEntity": {
               "type": "integer"
             }
           },
           "additionalProperties": false,
           "required": [
-            "MaxHistoryTime",
-            "MaxHistoryMB"
+            "MaxLogsPerEntity"
           ]
         }
       }
   },
   {
     "Name": "Uniter",
-    "Version": 4,
+    "Version": 3,
     "Schema": {
       "type": "object",
       "properties": {
             }
           }
         },
-        "ApplicationOwner": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringResults"
-            }
-          }
-        },
-        "ApplicationStatus": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/ApplicationStatusResults"
-            }
-          }
-        },
         "AssignedMachine": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "SetAgentStatus": {
+        "ServiceOwner": {
           "type": "object",
           "properties": {
             "Params": {
-              "$ref": "#/definitions/SetStatus"
+              "$ref": "#/definitions/Entities"
             },
             "Result": {
-              "$ref": "#/definitions/ErrorResults"
+              "$ref": "#/definitions/StringResults"
+            }
+          }
+        },
+        "ServiceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/ServiceStatusResults"
             }
           }
         },
-        "SetApplicationStatus": {
+        "SetAgentStatus": {
           "type": "object",
           "properties": {
             "Params": {
             }
           }
         },
+        "SetServiceStatus": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/SetStatus"
+            },
+            "Result": {
+              "$ref": "#/definitions/ErrorResults"
+            }
+          }
+        },
         "SetStatus": {
           "type": "object",
           "properties": {
             }
           }
         },
-        "WatchApplicationRelations": {
-          "type": "object",
-          "properties": {
-            "Params": {
-              "$ref": "#/definitions/Entities"
-            },
-            "Result": {
-              "$ref": "#/definitions/StringsWatchResults"
-            }
-          }
-        },
         "WatchConfigSettings": {
           "type": "object",
           "properties": {
             }
           }
         },
+        "WatchServiceRelations": {
+          "type": "object",
+          "properties": {
+            "Params": {
+              "$ref": "#/definitions/Entities"
+            },
+            "Result": {
+              "$ref": "#/definitions/StringsWatchResults"
+            }
+          }
+        },
         "WatchStorageAttachments": {
           "type": "object",
           "properties": {
             "Scope"
           ]
         },
-        "ApplicationStatusResult": {
-          "type": "object",
-          "properties": {
-            "Application": {
-              "$ref": "#/definitions/StatusResult"
-            },
-            "Error": {
-              "$ref": "#/definitions/Error"
-            },
-            "Units": {
-              "type": "object",
-              "patternProperties": {
-                ".*": {
-                  "$ref": "#/definitions/StatusResult"
-                }
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Application",
-            "Units",
-            "Error"
-          ]
-        },
-        "ApplicationStatusResults": {
-          "type": "object",
-          "properties": {
-            "Results": {
-              "type": "array",
-              "items": {
-                "$ref": "#/definitions/ApplicationStatusResult"
-              }
-            }
-          },
-          "additionalProperties": false,
-          "required": [
-            "Results"
-          ]
-        },
         "BoolResult": {
           "type": "object",
           "properties": {
         "Endpoint": {
           "type": "object",
           "properties": {
-            "ApplicationName": {
-              "type": "string"
-            },
             "Relation": {
               "$ref": "#/definitions/Relation"
+            },
+            "ServiceName": {
+              "type": "string"
             }
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationName",
+            "ServiceName",
             "Relation"
           ]
         },
         "MergeLeadershipSettingsParam": {
           "type": "object",
           "properties": {
-            "ApplicationTag": {
+            "ServiceTag": {
               "type": "string"
             },
             "Settings": {
           },
           "additionalProperties": false,
           "required": [
-            "ApplicationTag",
+            "ServiceTag",
             "Settings"
           ]
         },
             "Results"
           ]
         },
+        "ServiceStatusResult": {
+          "type": "object",
+          "properties": {
+            "Error": {
+              "$ref": "#/definitions/Error"
+            },
+            "Service": {
+              "$ref": "#/definitions/StatusResult"
+            },
+            "Units": {
+              "type": "object",
+              "patternProperties": {
+                ".*": {
+                  "$ref": "#/definitions/StatusResult"
+                }
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Service",
+            "Units",
+            "Error"
+          ]
+        },
+        "ServiceStatusResults": {
+          "type": "object",
+          "properties": {
+            "Results": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/ServiceStatusResult"
+              }
+            }
+          },
+          "additionalProperties": false,
+          "required": [
+            "Results"
+          ]
+        },
         "SetStatus": {
           "type": "object",
           "properties": {