Now make sure we are really using the new rest file. refs #1406
authorWard Vandewege <ward@clinicalfuture.com>
Wed, 20 Mar 2013 01:23:49 +0000 (21:23 -0400)
committerWard Vandewege <ward@clinicalfuture.com>
Wed, 20 Mar 2013 01:23:49 +0000 (21:23 -0400)
config/routes.rb
public/discovery/v1/apis/orvos/v1/rest [deleted file]
public/discovery/v1/apis/orvos/v1/rest.new [deleted file]

index 1a00f9a126c9a7ead938b09fa1dde590e845be6e..5ac122b8618051bbe4a7f9719141329f70e770bd 100644 (file)
@@ -97,7 +97,7 @@ Server::Application.routes.draw do
   match '/login', :to => 'user_sessions#login'
   match '/logout', :to => 'user_sessions#logout'
 
-  match '/discovery/v1/apis/orvos/v1/rest', :to => 'schema#discovery_rest_description'
+  match '/discovery/v1/apis/orvos/v1/rest', :to => 'orvos/v1/schema#discovery_rest_description'
 
   # Send unroutable requests to an arbitrary controller
   # (ends up at ApplicationController#render_not_found)
diff --git a/public/discovery/v1/apis/orvos/v1/rest b/public/discovery/v1/apis/orvos/v1/rest
deleted file mode 100644 (file)
index d02c738..0000000
+++ /dev/null
@@ -1,594 +0,0 @@
-{
- "kind": "discovery#restDescription",
- "discoveryVersion": "v1",
- "id": "orvos:v1",
- "name": "orvos",
- "version": "v1",
- "revision": "20130226",
- "title": "Orvos API",
- "description": "The API to interact with Orvos.",
- "documentationLink": "https://redmine.clinicalfuture.com/projects/orvos/",
- "protocol": "rest",
- "baseUrl": "https://api.clinicalfuture.com:3000/orvos/v1/",
- "basePath": "/orvos/v1/",
- "rootUrl": "https://api.clinicalfuture.com:3000/",
- "servicePath": "orvos/v1/",
- "batchPath": "batch",
- "parameters": {
-  "alt": {
-   "type": "string",
-   "description": "Data format for the response.",
-   "default": "json",
-   "enum": [
-    "json"
-   ],
-   "enumDescriptions": [
-    "Responses with Content-Type of application/json"
-   ],
-   "location": "query"
-  },
-  "fields": {
-   "type": "string",
-   "description": "Selector specifying which fields to include in a partial response.",
-   "location": "query"
-  },
-  "key": {
-   "type": "string",
-   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-   "location": "query"
-  },
-  "oauth_token": {
-   "type": "string",
-   "description": "OAuth 2.0 token for the current user.",
-   "location": "query"
-  },
-  "prettyPrint": {
-   "type": "boolean",
-   "description": "Returns response with indentations and line breaks.",
-   "default": "true",
-   "location": "query"
-  },
-  "quotaUser": {
-   "type": "string",
-   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
-   "location": "query"
-  },
-  "userIp": {
-   "type": "string",
-   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
-   "location": "query"
-  }
- },
- "auth": {
-  "oauth2": {
-   "scopes": {
-    "https://api.clinicalfuture.com/auth/orvos": {
-     "description": "View and manage the objects in your Orvos"
-    },
-    "https://api.clinicalfuture.com/auth/orvos.readonly": {
-     "description": "View the objects in your Orvos"
-    }
-   }
-  }
- },
- "schemas": {
-  "About": {
-   "id": "About",
-   "type": "object",
-   "description": "An item with user information and settings.",
-   "properties": {
-    "additionalRoleInfo": {
-     "type": "array",
-     "description": "Information about supported additional roles per file type. The most specific type takes precedence.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "roleSets": {
-        "type": "array",
-        "description": "The supported additional roles per primary role.",
-        "items": {
-         "type": "object",
-         "properties": {
-          "additionalRoles": {
-           "type": "array",
-           "description": "The supported additional roles with the primary role.",
-           "items": {
-            "type": "string"
-           }
-          },
-          "primaryRole": {
-           "type": "string",
-           "description": "A primary permission role."
-          }
-         }
-        }
-       },
-       "type": {
-        "type": "string",
-        "description": "The content type that this additional role info applies to."
-       }
-      }
-     }
-    },
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the item."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#about.",
-     "default": "orvos#about"
-    },
-    "largestChangeId": {
-     "type": "string",
-     "description": "The largest change id.",
-     "format": "int64"
-    },
-    "name": {
-     "type": "string",
-     "description": "The name of the current user."
-    },
-    "permissionId": {
-     "type": "string",
-     "description": "The current user's ID as visible in the permissions collection."
-    },
-    "quotaBytesTotal": {
-     "type": "string",
-     "description": "The total number of quota bytes.",
-     "format": "int64"
-    },
-    "quotaBytesUsed": {
-     "type": "string",
-     "description": "The number of quota bytes used.",
-     "format": "int64"
-    },
-    "remainingChangeIds": {
-     "type": "string",
-     "description": "The number of remaining change ids.",
-     "format": "int64"
-    },
-    "rootFolderId": {
-     "type": "string",
-     "description": "The id of the root folder."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this item."
-    },
-    "user": {
-     "$ref": "User",
-     "description": "The authenticated user."
-    }
-   }
-  },
-  "Collection": {
-   "id": "Collection",
-   "type": "object",
-   "description": "A collection of data files.",
-   "properties": {
-    "kind": {
-     "type": "string",
-     "description": "The type of collection. This is always orvos#collection.",
-     "default": "orvos#collection"
-    },
-    "id": {
-     "type": "string",
-     "description": "The id of the collection."
-    },
-    "etag": {
-     "type": "string",
-     "description": "ETag of the collection."
-    },
-    "locator": {
-     "type": "string",
-     "description": "CAS locator for the data in the collection."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this collection."
-    },
-    "createdByClient": {
-     "type": "string",
-     "description": "ID of the API client that created the collection."
-    },
-    "createdByUser": {
-     "type": "string",
-     "description": "ID of the user who created the collection."
-    },
-    "createdAt": {
-     "type": "string",
-     "description": "Create time for this collection (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "modifiedByClient": {
-     "type": "string",
-     "description": "ID of the API client that last modified the collection."
-    },
-    "modifiedByUser": {
-     "type": "string",
-     "description": "ID of the user who last modified the collection."
-    },
-    "modifiedAt": {
-     "type": "string",
-     "description": "Modification time for this collection (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "portableDataHash": {
-     "type": "string",
-     "description": "Relocatable hash of content only."
-    },
-    "name": {
-     "type": "string",
-     "description": "Name of the collection."
-    },
-    "redundancy": {
-     "type": "integer",
-     "description": "Desired replication level."
-    },
-    "redundancyConfirmedByClient": {
-     "type": "string",
-     "description": "ID of the API client that last verified redundancy level."
-    },
-    "redundancyConfirmedAt": {
-     "type": "string",
-     "description": "Time when replication level was last verified (formatted RFC 3339 timestamp)."
-    },
-    "redundancyConfirmedAs": {
-     "type": "integer",
-     "description": "Most recently verified replication level."
-    }
-   }
-  },
-  "CollectionList": {
-   "id": "CollectionList",
-   "type": "object",
-   "description": "A list of collections.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of collections.",
-     "items": {
-      "$ref": "Collection"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#collectionList.",
-     "default": "orvos#collectionList"
-    },
-    "nextLink": {
-     "type": "string",
-     "description": "A link to the next page of collections."
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The page token for the next page of collections."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "Link": {
-   "id": "Link",
-   "type": "object",
-   "description": "A link object.",
-   "properties": {
-    "kind": {
-     "type": "string",
-     "description": "The type of link. This is always orvos#link.",
-     "default": "orvos#link"
-    },
-    "id": {
-     "type": "string",
-     "description": "The id of the link."
-    },
-    "etag": {
-     "type": "string",
-     "description": "ETag of the link."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this link."
-    },
-    "createdByClient": {
-     "type": "string",
-     "description": "ID of the API client that created the collection."
-    },
-    "createdByUser": {
-     "type": "string",
-     "description": "ID of the user who created the collection."
-    },
-    "createdAt": {
-     "type": "string",
-     "description": "Create time for this link (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "modifiedByClient": {
-     "type": "string",
-     "description": "ID of the API client that last modified the link."
-    },
-    "modifiedByUser": {
-     "type": "string",
-     "description": "ID of the user who last modified the link."
-    },
-    "modifiedAt": {
-     "type": "string",
-     "description": "Modification time for this link (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "name": {
-     "type": "string",
-     "description": "Name of the link."
-    },
-    "linkClass": {
-     "type": "string",
-     "description": "Class of the link."
-    },
-    "properties": {
-     "type": "string",
-     "description": "Properties of the link."
-    },
-    "headUuid": {
-     "type": "string",
-     "description": "ID of the 'head' of the link."
-    },
-    "headKind": {
-     "type": "string",
-     "description": "Object type of the 'head' of the link."
-    },
-    "tailUuid": {
-     "type": "string",
-     "description": "ID of the 'tail' of the link."
-    },
-    "tailKind": {
-     "type": "string",
-     "description": "Object type of the 'tail' of the link."
-    }
-   }
-  },
-  "LinkList": {
-   "id": "LinkList",
-   "type": "object",
-   "description": "A list of links.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of links.",
-     "items": {
-      "$ref": "Link"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#linkList.",
-     "default": "orvos#linkList"
-    },
-    "nextLink": {
-     "type": "string",
-     "description": "A link to the next page of links."
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The page token for the next page of links."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "User": {
-   "id": "User",
-   "type": "object",
-   "description": "The JSON template for a user.",
-   "properties": {
-    "displayName": {
-     "type": "string",
-     "description": "A plain text displayable name for this user."
-    },
-    "isAuthenticatedUser": {
-     "type": "boolean",
-     "description": "Whether this user is the same as the authenticated user of which the request was made on behalf."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#user.",
-     "default": "orvos#user"
-    }
-   }
-  }
- },
- "resources": {
-  "about": {
-   "methods": {
-    "get": {
-     "id": "orvos.about.get",
-     "path": "about",
-     "httpMethod": "GET",
-     "description": "Gets the information about the current user along with Orvos API settings",
-     "parameters": {
-      "includeSubscribed": {
-       "type": "boolean",
-       "description": "Whether to include subscribed items when calculating the number of remaining change IDs",
-       "default": "true",
-       "location": "query"
-      },
-      "maxChangeIdCount": {
-       "type": "string",
-       "description": "Maximum number of remaining change IDs to count",
-       "default": "1",
-       "format": "int64",
-       "location": "query"
-      },
-      "startChangeId": {
-       "type": "string",
-       "description": "Change ID to start counting from when calculating number of remaining change IDs",
-       "format": "int64",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "About"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "collections": {
-   "methods": {
-    "get": {
-     "id": "orvos.collections.get",
-     "path": "collections/{collectionId}",
-     "httpMethod": "GET",
-     "description": "Gets a collection's metadata by ID.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID for the collection in question.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.collections.list",
-     "path": "collections",
-     "httpMethod": "GET",
-     "description": "Lists the user's collections.",
-     "parameters": {
-      "limit": {
-       "type": "integer",
-       "description": "Maximum number of collections to return.",
-       "default": "100",
-       "format": "int32",
-       "minimum": "0",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "Page token for collections.",
-       "location": "query"
-      },
-      "q": {
-       "type": "string",
-       "description": "Query string for searching collections.",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "CollectionList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "links": {
-   "methods": {
-    "get": {
-     "id": "orvos.links.get",
-     "path": "links/{linkId}",
-     "httpMethod": "GET",
-     "description": "Gets a link's metadata by ID.",
-     "parameters": {
-      "linkId": {
-       "type": "string",
-       "description": "The ID for the link in question.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "linkId"
-     ],
-     "response": {
-      "$ref": "Link"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.links.list",
-     "path": "links",
-     "httpMethod": "GET",
-     "description": "Lists the user's links.",
-     "parameters": {
-      "limit": {
-       "type": "integer",
-       "description": "Maximum number of links to return.",
-       "default": "100",
-       "format": "int32",
-       "minimum": "0",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "Page token for links.",
-       "location": "query"
-      },
-      "q": {
-       "type": "string",
-       "description": "Query string for searching links.",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "linkList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "nodes": {
-    "methods": {
-      "create": {
-       "id": "orvos.nodes.create",
-       "path": "nodes",
-       "httpMethod": "POST",
-       "parameters": {
-       }
-      },
-      "get": {
-        "id": "orvos.nodes.get",
-        "path": "nodes/{nodeId}",
-        "httpMethod": "GET",
-        "parameters": {
-          "uuid": {
-            "type": "string"
-          }
-        }
-      }
-    }
-  }
- }
-}
diff --git a/public/discovery/v1/apis/orvos/v1/rest.new b/public/discovery/v1/apis/orvos/v1/rest.new
deleted file mode 100644 (file)
index f2d46fd..0000000
+++ /dev/null
@@ -1,2862 +0,0 @@
-{
- "kind": "discovery#restDescription",
- "discoveryVersion": "v1",
- "id": "orvos:v2",
- "name": "orvos",
- "version": "v2",
- "revision": "20121015",
- "title": "Orvos API",
- "description": "The API to interact with Orvos.",
- "documentationLink": "https://redmine.clinicalfuture.com/projects/orvos/",
- "protocol": "rest",
- "baseUrl": "https://api.clinicalfuture.com:3000/orvos/v1/",
- "basePath": "/orvos/v1/",
- "rootUrl": "https://api.clinicalfuture.com:3000/",
- "servicePath": "orvos/v1/",
- "batchPath": "batch",
- "parameters": {
-  "alt": {
-   "type": "string",
-   "description": "Data format for the response.",
-   "default": "json",
-   "enum": [
-    "json"
-   ],
-   "enumDescriptions": [
-    "Responses with Content-Type of application/json"
-   ],
-   "location": "query"
-  },
-  "fields": {
-   "type": "string",
-   "description": "Selector specifying which fields to include in a partial response.",
-   "location": "query"
-  },
-  "key": {
-   "type": "string",
-   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-   "location": "query"
-  },
-  "oauth_token": {
-   "type": "string",
-   "description": "OAuth 2.0 token for the current user.",
-   "location": "query"
-  },
-  "prettyPrint": {
-   "type": "boolean",
-   "description": "Returns response with indentations and line breaks.",
-   "default": "true",
-   "location": "query"
-  },
-  "quotaUser": {
-   "type": "string",
-   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
-   "location": "query"
-  },
-  "userIp": {
-   "type": "string",
-   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
-   "location": "query"
-  }
- },
- "auth": {
-  "oauth2": {
-   "scopes": {
-    "https://api.clinicalfuture.com/auth/orvos": {
-     "description": "View and manage the files and documents in your Orvos"
-    },
-    "https://api.clinicalfuture.com/auth/orvos.apps.readonly": {
-     "description": "View your Orvos apps"
-    },
-    "https://api.clinicalfuture.com/auth/orvos.file": {
-     "description": "View and manage Orvos files that you have opened or created with this app"
-    },
-    "https://api.clinicalfuture.com/auth/orvos.metadata.readonly": {
-     "description": "View metadata for files and documents in your Orvos"
-    },
-    "https://api.clinicalfuture.com/auth/orvos.readonly": {
-     "description": "View the files and documents in your Orvos"
-    }
-   }
-  }
- },
- "schemas": {
-  "About": {
-   "id": "About",
-   "type": "object",
-   "description": "An item with user information and settings.",
-   "properties": {
-    "additionalRoleInfo": {
-     "type": "array",
-     "description": "Information about supported additional roles per file type. The most specific type takes precedence.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "roleSets": {
-        "type": "array",
-        "description": "The supported additional roles per primary role.",
-        "items": {
-         "type": "object",
-         "properties": {
-          "additionalRoles": {
-           "type": "array",
-           "description": "The supported additional roles with the primary role.",
-           "items": {
-            "type": "string"
-           }
-          },
-          "primaryRole": {
-           "type": "string",
-           "description": "A primary permission role."
-          }
-         }
-        }
-       },
-       "type": {
-        "type": "string",
-        "description": "The content type that this additional role info applies to."
-       }
-      }
-     }
-    },
-    "domainSharingPolicy": {
-     "type": "string",
-     "description": "The domain sharing policy for the current user."
-    },
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the item."
-    },
-    "exportFormats": {
-     "type": "array",
-     "description": "The allowable export formats.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "source": {
-        "type": "string",
-        "description": "The content type to convert from."
-       },
-       "targets": {
-        "type": "array",
-        "description": "The possible content types to convert to.",
-        "items": {
-         "type": "string"
-        }
-       }
-      }
-     }
-    },
-    "features": {
-     "type": "array",
-     "description": "List of additional features enabled on this account.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "featureName": {
-        "type": "string",
-        "description": "The name of the feature."
-       },
-       "featureRate": {
-        "type": "number",
-        "description": "The request limit rate for this feature, in queries per second.",
-        "format": "double"
-       }
-      }
-     }
-    },
-    "importFormats": {
-     "type": "array",
-     "description": "The allowable import formats.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "source": {
-        "type": "string",
-        "description": "The imported file's content type to convert from."
-       },
-       "targets": {
-        "type": "array",
-        "description": "The possible content types to convert to.",
-        "items": {
-         "type": "string"
-        }
-       }
-      }
-     }
-    },
-    "isCurrentAppInstalled": {
-     "type": "boolean",
-     "description": "A boolean indicating whether the authenticated app is installed by the authenticated user."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#about.",
-     "default": "orvos#about"
-    },
-    "largestChangeId": {
-     "type": "string",
-     "description": "The largest change id.",
-     "format": "int64"
-    },
-    "maxUploadSizes": {
-     "type": "array",
-     "description": "List of max upload sizes for each file type. The most specific type takes precedence.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "size": {
-        "type": "string",
-        "description": "The max upload size for this type.",
-        "format": "int64"
-       },
-       "type": {
-        "type": "string",
-        "description": "The file type."
-       }
-      }
-     }
-    },
-    "name": {
-     "type": "string",
-     "description": "The name of the current user."
-    },
-    "permissionId": {
-     "type": "string",
-     "description": "The current user's ID as visible in the permissions collection."
-    },
-    "quotaBytesTotal": {
-     "type": "string",
-     "description": "The total number of quota bytes.",
-     "format": "int64"
-    },
-    "quotaBytesUsed": {
-     "type": "string",
-     "description": "The number of quota bytes used.",
-     "format": "int64"
-    },
-    "quotaBytesUsedAggregate": {
-     "type": "string",
-     "description": "The number of quota bytes used by all Google apps (Orvos, Picasa, etc.).",
-     "format": "int64"
-    },
-    "quotaBytesUsedInTrash": {
-     "type": "string",
-     "description": "The number of quota bytes used by trashed items.",
-     "format": "int64"
-    },
-    "remainingChangeIds": {
-     "type": "string",
-     "description": "The number of remaining change ids.",
-     "format": "int64"
-    },
-    "rootFolderId": {
-     "type": "string",
-     "description": "The id of the root folder."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this item."
-    },
-    "user": {
-     "$ref": "User",
-     "description": "The authenticated user."
-    }
-   }
-  },
-  "App": {
-   "id": "App",
-   "type": "object",
-   "description": "Information about a third-party application which the user has installed or given access to Orvos.",
-   "properties": {
-    "authorized": {
-     "type": "boolean",
-     "description": "Whether the app is authorized to access data on the user's Orvos."
-    },
-    "icons": {
-     "type": "array",
-     "description": "The various icons for the app.",
-     "items": {
-      "type": "object",
-      "properties": {
-       "category": {
-        "type": "string",
-        "description": "Category of the icon. Allowed values are:  \n- application - icon for the application \n- document - icon for a file associated with the app \n- documentShared - icon for a shared file associated with the app"
-       },
-       "iconUrl": {
-        "type": "string",
-        "description": "URL for the icon."
-       },
-       "size": {
-        "type": "integer",
-        "description": "Size of the icon. Represented as the maximum of the width and height.",
-        "format": "int32"
-       }
-      }
-     }
-    },
-    "id": {
-     "type": "string",
-     "description": "The ID of the app."
-    },
-    "installed": {
-     "type": "boolean",
-     "description": "Whether the app is installed."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#app.",
-     "default": "orvos#app"
-    },
-    "name": {
-     "type": "string",
-     "description": "The name of the app."
-    },
-    "objectType": {
-     "type": "string",
-     "description": "The type of object this app creates (e.g. Chart). If empty, the app name should be used instead."
-    },
-    "primaryFileExtensions": {
-     "type": "array",
-     "description": "The list of primary file extensions.",
-     "items": {
-      "type": "string"
-     }
-    },
-    "primaryMimeTypes": {
-     "type": "array",
-     "description": "The list of primary mime types.",
-     "items": {
-      "type": "string"
-     }
-    },
-    "productUrl": {
-     "type": "string",
-     "description": "The product URL."
-    },
-    "secondaryFileExtensions": {
-     "type": "array",
-     "description": "The list of secondary file extensions.",
-     "items": {
-      "type": "string"
-     }
-    },
-    "secondaryMimeTypes": {
-     "type": "array",
-     "description": "The list of secondary mime types.",
-     "items": {
-      "type": "string"
-     }
-    },
-    "supportsCreate": {
-     "type": "boolean",
-     "description": "Whether this app supports creating new objects."
-    },
-    "supportsImport": {
-     "type": "boolean",
-     "description": "Whether this app supports importing Google Docs."
-    },
-    "useByDefault": {
-     "type": "boolean",
-     "description": "Whether the app is selected as the default handler for the types it supports."
-    }
-   }
-  },
-  "AppList": {
-   "id": "AppList",
-   "type": "object",
-   "description": "A list of third-party applications which the user has installed or given access to Orvos.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of apps.",
-     "items": {
-      "$ref": "App"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#appList.",
-     "default": "orvos#appList"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "Change": {
-   "id": "Change",
-   "type": "object",
-   "description": "Representation of a change to a file.",
-   "properties": {
-    "deleted": {
-     "type": "boolean",
-     "description": "Whether the file has been deleted."
-    },
-    "file": {
-     "$ref": "File",
-     "description": "The updated state of the file. Present if the file has not been deleted."
-    },
-    "fileId": {
-     "type": "string",
-     "description": "The ID of the file associated with this change."
-    },
-    "id": {
-     "type": "string",
-     "description": "The ID of the change.",
-     "format": "int64"
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#change.",
-     "default": "orvos#change"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this change."
-    }
-   }
-  },
-  "ChangeList": {
-   "id": "ChangeList",
-   "type": "object",
-   "description": "A list of changes for a user.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of changes.",
-     "items": {
-      "$ref": "Change"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#changeList.",
-     "default": "orvos#changeList"
-    },
-    "largestChangeId": {
-     "type": "string",
-     "description": "The current largest change ID.",
-     "format": "int64"
-    },
-    "nextLink": {
-     "type": "string",
-     "description": "A link to the next page of changes."
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The page token for the next page of changes."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "ChildList": {
-   "id": "ChildList",
-   "type": "object",
-   "description": "A list of children of a file.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of children.",
-     "items": {
-      "$ref": "ChildReference"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#childList.",
-     "default": "orvos#childList"
-    },
-    "nextLink": {
-     "type": "string",
-     "description": "A link to the next page of children."
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The page token for the next page of children."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "ChildReference": {
-   "id": "ChildReference",
-   "type": "object",
-   "description": "A reference to a file's child.",
-   "properties": {
-    "childLink": {
-     "type": "string",
-     "description": "A link to the child."
-    },
-    "id": {
-     "type": "string",
-     "description": "The ID of the child.",
-     "annotations": {
-      "required": [
-       "orvos.children.insert"
-      ]
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#childReference.",
-     "default": "orvos#childReference"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this reference."
-    }
-   }
-  },
-  "Comment": {
-   "id": "Comment",
-   "type": "object",
-   "description": "A JSON representation of a comment on a file in Orvos.",
-   "properties": {
-    "anchor": {
-     "type": "string",
-     "description": "A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties."
-    },
-    "author": {
-     "$ref": "User",
-     "description": "The user who wrote this comment."
-    },
-    "commentId": {
-     "type": "string",
-     "description": "The ID of the comment."
-    },
-    "content": {
-     "type": "string",
-     "description": "The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment's content.",
-     "annotations": {
-      "required": [
-       "orvos.comments.insert",
-       "orvos.comments.update"
-      ]
-     }
-    },
-    "context": {
-     "type": "object",
-     "description": "The context of the file which is being commented on.",
-     "properties": {
-      "type": {
-       "type": "string",
-       "description": "The MIME type of the context snippet."
-      },
-      "value": {
-       "type": "string",
-       "description": "Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about."
-      }
-     }
-    },
-    "createdDate": {
-     "type": "string",
-     "description": "The date when this comment was first created.",
-     "format": "date-time"
-    },
-    "deleted": {
-     "type": "boolean",
-     "description": "Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed."
-    },
-    "fileId": {
-     "type": "string",
-     "description": "The file which this comment is addressing."
-    },
-    "fileTitle": {
-     "type": "string",
-     "description": "The title of the file which this comment is addressing."
-    },
-    "htmlContent": {
-     "type": "string",
-     "description": "HTML formatted content for this comment."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#comment.",
-     "default": "orvos#comment"
-    },
-    "modifiedDate": {
-     "type": "string",
-     "description": "The date when this comment or any of its replies were last modified.",
-     "format": "date-time"
-    },
-    "replies": {
-     "type": "array",
-     "description": "Replies to this post.",
-     "items": {
-      "$ref": "CommentReply"
-     }
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this comment."
-    },
-    "status": {
-     "type": "string",
-     "description": "The status of this comment. Status can be changed by posting a reply to a comment with the desired status.  \n- \"open\" - The comment is still open. \n- \"resolved\" - The comment has been resolved by one of its replies."
-    }
-   }
-  },
-  "CommentList": {
-   "id": "CommentList",
-   "type": "object",
-   "description": "A JSON representation of a list of comments on a file in Orvos.",
-   "properties": {
-    "items": {
-     "type": "array",
-     "description": "List of comments.",
-     "items": {
-      "$ref": "Comment"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#commentList.",
-     "default": "orvos#commentList"
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The token to use to request the next page of results."
-    }
-   }
-  },
-  "CommentReply": {
-   "id": "CommentReply",
-   "type": "object",
-   "description": "A JSON representation of a reply to a comment on a file in Orvos.",
-   "properties": {
-    "author": {
-     "$ref": "User",
-     "description": "The user who wrote this reply."
-    },
-    "content": {
-     "type": "string",
-     "description": "The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply's content. This field is required on inserts if no verb is specified (resolve/reopen).",
-     "annotations": {
-      "required": [
-       "orvos.replies.update"
-      ]
-     }
-    },
-    "createdDate": {
-     "type": "string",
-     "description": "The date when this reply was first created.",
-     "format": "date-time"
-    },
-    "deleted": {
-     "type": "boolean",
-     "description": "Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed."
-    },
-    "htmlContent": {
-     "type": "string",
-     "description": "HTML formatted content for this reply."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#commentReply.",
-     "default": "orvos#commentReply"
-    },
-    "modifiedDate": {
-     "type": "string",
-     "description": "The date when this reply was last modified.",
-     "format": "date-time"
-    },
-    "replyId": {
-     "type": "string",
-     "description": "The ID of the reply."
-    },
-    "verb": {
-     "type": "string",
-     "description": "The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:  \n- \"resolve\" - To resolve a comment. \n- \"reopen\" - To reopen (un-resolve) a comment."
-    }
-   }
-  },
-  "CommentReplyList": {
-   "id": "CommentReplyList",
-   "type": "object",
-   "description": "A JSON representation of a list of replies to a comment on a file in Orvos.",
-   "properties": {
-    "items": {
-     "type": "array",
-     "description": "List of reply.",
-     "items": {
-      "$ref": "CommentReply"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#commentReplyList.",
-     "default": "orvos#commentReplyList"
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The token to use to request the next page of results."
-    }
-   }
-  },
-  "Collection": {
-   "id": "Collection",
-   "type": "object",
-   "description": "The metadata for a collection.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the collection."
-    },
-    "created_at": {
-     "type": "string",
-     "description": "Create time for this collection (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "created_by_client": {
-     "type": "string",
-     "description": "Name of the API client that created this collection."
-    },
-    "created_by_user": {
-     "type": "string",
-     "description": "Name of the user that created this collection."
-    },
-    "modified_at": {
-     "type": "string",
-     "description": "Last time this collection was modified by anyone (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "modified_by_client": {
-     "type": "string",
-     "description": "Name of the last API client to modify this collection."
-    },
-    "modified_by_user": {
-     "type": "string",
-     "description": "Name of the last user to modify this collection."
-    },
-    "portable_data_hash": {
-     "type": "string",
-     "description": "The portable data hash for the collection."
-    },
-    "name": {
-     "type": "string",
-     "description": "The name of the collection."
-    },
-    "redundancy": {
-     "type": "integer",
-     "description": "The number of copies of this collection stored in this Orvos instance.",
-     "format": "int32"
-    },
-    "redundancy_confirmed_by_client": {
-     "type": "string",
-     "description": "Name of the last API client to verify the redundancy for this collection."
-    },
-    "redundancy_confirmed_at": {
-     "type": "string",
-     "description": "Last time the redundancy number was confirmed (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "redundancy_confirmed_as": {
-     "type": "integer",
-     "description": "The number of copies of this collection stored in this Orvos instance, as confirmed by the last API client to verify the redundancy for this collection.",
-     "format": "int32"
-    },
-    "id": {
-     "type": "string",
-     "description": "The id of the collection."
-    },
-    "kind": {
-     "type": "string",
-     "description": "The type of collection. This is always orvos#collection.",
-     "default": "orvos#collection"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this collection."
-    },
-   }
-  },
-  "CollectionList": {
-   "id": "CollectionList",
-   "type": "object",
-   "description": "A list of collections.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of collections.",
-     "items": {
-      "$ref": "Collection"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#collectionList.",
-     "default": "orvos#collectionList"
-    },
-    "nextLink": {
-     "type": "string",
-     "description": "A link to the next page of collections."
-    },
-    "nextPageToken": {
-     "type": "string",
-     "description": "The page token for the next page of collections."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "ParentList": {
-   "id": "ParentList",
-   "type": "object",
-   "description": "A list of a file's parents.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of parents.",
-     "items": {
-      "$ref": "ParentReference"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#parentList.",
-     "default": "orvos#parentList"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "ParentReference": {
-   "id": "ParentReference",
-   "type": "object",
-   "description": "A reference to a file's parent.",
-   "properties": {
-    "id": {
-     "type": "string",
-     "description": "The ID of the parent.",
-     "annotations": {
-      "required": [
-       "orvos.parents.insert"
-      ]
-     }
-    },
-    "isRoot": {
-     "type": "boolean",
-     "description": "Whether or not the parent is the root folder."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#parentReference.",
-     "default": "orvos#parentReference"
-    },
-    "parentLink": {
-     "type": "string",
-     "description": "A link to the parent."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this reference."
-    }
-   }
-  },
-  "Permission": {
-   "id": "Permission",
-   "type": "object",
-   "description": "A single permission for a file.",
-   "properties": {
-    "additionalRoles": {
-     "type": "array",
-     "description": "Additional roles for this user. Only commenter is currently allowed.",
-     "items": {
-      "type": "string"
-     }
-    },
-    "authKey": {
-     "type": "string",
-     "description": "The authkey parameter required for this permission."
-    },
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the permission."
-    },
-    "id": {
-     "type": "string",
-     "description": "The ID of the permission."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#permission.",
-     "default": "orvos#permission"
-    },
-    "name": {
-     "type": "string",
-     "description": "The name for this permission."
-    },
-    "photoLink": {
-     "type": "string",
-     "description": "A link to the profile photo, if available."
-    },
-    "role": {
-     "type": "string",
-     "description": "The primary role for this user. Allowed values are:  \n- owner \n- reader \n- writer",
-     "annotations": {
-      "required": [
-       "orvos.permissions.insert"
-      ]
-     }
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this permission."
-    },
-    "type": {
-     "type": "string",
-     "description": "The account type. Allowed values are:  \n- user \n- group \n- domain \n- anyone",
-     "annotations": {
-      "required": [
-       "orvos.permissions.insert"
-      ]
-     }
-    },
-    "value": {
-     "type": "string",
-     "description": "The email address or domain name for the entity. This is not populated in responses.",
-     "annotations": {
-      "required": [
-       "orvos.permissions.insert"
-      ]
-     }
-    },
-    "withLink": {
-     "type": "boolean",
-     "description": "Whether the link is required for this permission."
-    }
-   }
-  },
-  "PermissionList": {
-   "id": "PermissionList",
-   "type": "object",
-   "description": "A list of permissions associated with a file.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of permissions.",
-     "items": {
-      "$ref": "Permission"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#permissionList.",
-     "default": "orvos#permissionList"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "Revision": {
-   "id": "Revision",
-   "type": "object",
-   "description": "A single revision of a file.",
-   "properties": {
-    "downloadUrl": {
-     "type": "string",
-     "description": "Short term download URL for the file. This will only be populated on files with content stored in Orvos."
-    },
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the revision."
-    },
-    "exportLinks": {
-     "type": "object",
-     "description": "Links for exporting Google Docs to specific formats.",
-     "additionalProperties": {
-      "type": "string",
-      "description": "A mapping from export format to URL"
-     }
-    },
-    "fileSize": {
-     "type": "string",
-     "description": "The size of the revision in bytes. This will only be populated on files with content stored in Orvos.",
-     "format": "int64"
-    },
-    "id": {
-     "type": "string",
-     "description": "The ID of the revision."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#revision.",
-     "default": "orvos#revision"
-    },
-    "lastModifyingUserName": {
-     "type": "string",
-     "description": "Name of the last user to modify this revision."
-    },
-    "md5Checksum": {
-     "type": "string",
-     "description": "An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Orvos."
-    },
-    "mimeType": {
-     "type": "string",
-     "description": "The MIME type of the revision."
-    },
-    "modifiedDate": {
-     "type": "string",
-     "description": "Last time this revision was modified (formatted RFC 3339 timestamp).",
-     "format": "date-time"
-    },
-    "originalFilename": {
-     "type": "string",
-     "description": "The original filename when this revision was created. This will only be populated on files with content stored in Orvos."
-    },
-    "pinned": {
-     "type": "boolean",
-     "description": "Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Orvos which are not Google Docs. Revisions can also be pinned when they are created through the orvos.files.insert/update/copy by using the pinned query parameter."
-    },
-    "publishAuto": {
-     "type": "boolean",
-     "description": "Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs."
-    },
-    "published": {
-     "type": "boolean",
-     "description": "Whether this revision is published. This is only populated and can only be modified for Google Docs."
-    },
-    "publishedLink": {
-     "type": "string",
-     "description": "A link to the published revision."
-    },
-    "publishedOutsideDomain": {
-     "type": "boolean",
-     "description": "Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs."
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this revision."
-    }
-   }
-  },
-  "RevisionList": {
-   "id": "RevisionList",
-   "type": "object",
-   "description": "A list of revisions of a file.",
-   "properties": {
-    "etag": {
-     "type": "string",
-     "description": "The ETag of the list."
-    },
-    "items": {
-     "type": "array",
-     "description": "The actual list of revisions.",
-     "items": {
-      "$ref": "Revision"
-     }
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#revisionList.",
-     "default": "orvos#revisionList"
-    },
-    "selfLink": {
-     "type": "string",
-     "description": "A link back to this list."
-    }
-   }
-  },
-  "User": {
-   "id": "User",
-   "type": "object",
-   "description": "The JSON template for a user.",
-   "properties": {
-    "displayName": {
-     "type": "string",
-     "description": "A plain text displayable name for this user."
-    },
-    "isAuthenticatedUser": {
-     "type": "boolean",
-     "description": "Whether this user is the same as the authenticated user of which the request was made on behalf."
-    },
-    "kind": {
-     "type": "string",
-     "description": "This is always orvos#user.",
-     "default": "orvos#user"
-    },
-    "picture": {
-     "type": "object",
-     "description": "The user's profile picture.",
-     "properties": {
-      "url": {
-       "type": "string",
-       "description": "A URL that points to a profile picture of this user."
-      }
-     }
-    }
-   }
-  }
- },
- "resources": {
-  "about": {
-   "methods": {
-    "get": {
-     "id": "orvos.about.get",
-     "path": "about",
-     "httpMethod": "GET",
-     "description": "Gets the information about the current user along with Orvos API settings",
-     "parameters": {
-      "includeSubscribed": {
-       "type": "boolean",
-       "description": "Whether to include subscribed items when calculating the number of remaining change IDs",
-       "default": "true",
-       "location": "query"
-      },
-      "maxChangeIdCount": {
-       "type": "string",
-       "description": "Maximum number of remaining change IDs to count",
-       "default": "1",
-       "format": "int64",
-       "location": "query"
-      },
-      "startChangeId": {
-       "type": "string",
-       "description": "Change ID to start counting from when calculating number of remaining change IDs",
-       "format": "int64",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "About"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "apps": {
-   "methods": {
-    "get": {
-     "id": "orvos.apps.get",
-     "path": "apps/{appId}",
-     "httpMethod": "GET",
-     "description": "Gets a specific app.",
-     "parameters": {
-      "appId": {
-       "type": "string",
-       "description": "The ID of the app.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "appId"
-     ],
-     "response": {
-      "$ref": "App"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos.apps.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.apps.list",
-     "path": "apps",
-     "httpMethod": "GET",
-     "description": "Lists a user's apps.",
-     "response": {
-      "$ref": "AppList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos.apps.readonly"
-     ]
-    }
-   }
-  },
-  "changes": {
-   "methods": {
-    "get": {
-     "id": "orvos.changes.get",
-     "path": "changes/{changeId}",
-     "httpMethod": "GET",
-     "description": "Gets a specific change.",
-     "parameters": {
-      "changeId": {
-       "type": "string",
-       "description": "The ID of the change.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "changeId"
-     ],
-     "response": {
-      "$ref": "Change"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.changes.list",
-     "path": "changes",
-     "httpMethod": "GET",
-     "description": "Lists the changes for a user.",
-     "parameters": {
-      "includeDeleted": {
-       "type": "boolean",
-       "description": "Whether to include deleted items.",
-       "default": "true",
-       "location": "query"
-      },
-      "includeSubscribed": {
-       "type": "boolean",
-       "description": "Whether to include subscribed items.",
-       "default": "true",
-       "location": "query"
-      },
-      "maxResults": {
-       "type": "integer",
-       "description": "Maximum number of changes to return.",
-       "default": "100",
-       "format": "int32",
-       "minimum": "0",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "Page token for changes.",
-       "location": "query"
-      },
-      "startChangeId": {
-       "type": "string",
-       "description": "Change ID to start listing changes from.",
-       "format": "int64",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "ChangeList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "children": {
-   "methods": {
-    "delete": {
-     "id": "orvos.children.delete",
-     "path": "files/{folderId}/children/{childId}",
-     "httpMethod": "DELETE",
-     "description": "Removes a child from a folder.",
-     "parameters": {
-      "childId": {
-       "type": "string",
-       "description": "The ID of the child.",
-       "required": true,
-       "location": "path"
-      },
-      "folderId": {
-       "type": "string",
-       "description": "The ID of the folder.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "folderId",
-      "childId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "get": {
-     "id": "orvos.children.get",
-     "path": "files/{folderId}/children/{childId}",
-     "httpMethod": "GET",
-     "description": "Gets a specific child reference.",
-     "parameters": {
-      "childId": {
-       "type": "string",
-       "description": "The ID of the child.",
-       "required": true,
-       "location": "path"
-      },
-      "folderId": {
-       "type": "string",
-       "description": "The ID of the folder.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "folderId",
-      "childId"
-     ],
-     "response": {
-      "$ref": "ChildReference"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.children.insert",
-     "path": "files/{folderId}/children",
-     "httpMethod": "POST",
-     "description": "Inserts a file into a folder.",
-     "parameters": {
-      "folderId": {
-       "type": "string",
-       "description": "The ID of the folder.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "folderId"
-     ],
-     "request": {
-      "$ref": "ChildReference"
-     },
-     "response": {
-      "$ref": "ChildReference"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "list": {
-     "id": "orvos.children.list",
-     "path": "files/{folderId}/children",
-     "httpMethod": "GET",
-     "description": "Lists a folder's children.",
-     "parameters": {
-      "folderId": {
-       "type": "string",
-       "description": "The ID of the folder.",
-       "required": true,
-       "location": "path"
-      },
-      "maxResults": {
-       "type": "integer",
-       "description": "Maximum number of children to return.",
-       "default": "100",
-       "format": "int32",
-       "minimum": "0",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "Page token for children.",
-       "location": "query"
-      },
-      "q": {
-       "type": "string",
-       "description": "Query string for searching children.",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "folderId"
-     ],
-     "response": {
-      "$ref": "ChildList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "comments": {
-   "methods": {
-    "delete": {
-     "id": "orvos.comments.delete",
-     "path": "files/{fileId}/comments/{commentId}",
-     "httpMethod": "DELETE",
-     "description": "Deletes a comment.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "get": {
-     "id": "orvos.comments.get",
-     "path": "files/{fileId}/comments/{commentId}",
-     "httpMethod": "GET",
-     "description": "Gets a comment by ID.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "response": {
-      "$ref": "Comment"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.comments.insert",
-     "path": "files/{fileId}/comments",
-     "httpMethod": "POST",
-     "description": "Creates a new comment on the given file.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "request": {
-      "$ref": "Comment"
-     },
-     "response": {
-      "$ref": "Comment"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.comments.list",
-     "path": "files/{fileId}/comments",
-     "httpMethod": "GET",
-     "description": "Lists a file's comments.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "includeDeleted": {
-       "type": "boolean",
-       "description": "If set, all comments, including deleted comments (with content stripped) will be returned.",
-       "default": "false",
-       "location": "query"
-      },
-      "maxResults": {
-       "type": "integer",
-       "description": "The maximum number of discussions to include in the response, used for paging.",
-       "default": "20",
-       "format": "int32",
-       "minimum": "0",
-       "maximum": "100",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of \"nextPageToken\" from the previous response.",
-       "location": "query"
-      },
-      "updatedMin": {
-       "type": "string",
-       "description": "Only discussions that were updated after this timestamp will be returned. Formatted as an RFC 3339 timestamp.",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "response": {
-      "$ref": "CommentList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "patch": {
-     "id": "orvos.comments.patch",
-     "path": "files/{fileId}/comments/{commentId}",
-     "httpMethod": "PATCH",
-     "description": "Updates an existing comment. This method supports patch semantics.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "request": {
-      "$ref": "Comment"
-     },
-     "response": {
-      "$ref": "Comment"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    },
-    "update": {
-     "id": "orvos.comments.update",
-     "path": "files/{fileId}/comments/{commentId}",
-     "httpMethod": "PUT",
-     "description": "Updates an existing comment.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "request": {
-      "$ref": "Comment"
-     },
-     "response": {
-      "$ref": "Comment"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    }
-   }
-  },
-  "collections": {
-   "methods": {
-    "copy": {
-     "id": "orvos.collections.copy",
-     "path": "collections/{collectionId}/copy",
-     "httpMethod": "POST",
-     "description": "Creates a copy of the specified collection.",
-     "parameters": {
-      "convert": {
-       "type": "boolean",
-       "description": "Whether to convert this collection to the corresponding Google Docs format.",
-       "default": "false",
-       "location": "query"
-      },
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to copy.",
-       "required": true,
-       "location": "path"
-      },
-      "ocr": {
-       "type": "boolean",
-       "description": "Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.",
-       "default": "false",
-       "location": "query"
-      },
-      "ocrLanguage": {
-       "type": "string",
-       "description": "If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.",
-       "location": "query"
-      },
-      "pinned": {
-       "type": "boolean",
-       "description": "Whether to pin the head revision of the new copy.",
-       "default": "false",
-       "location": "query"
-      },
-      "sourceLanguage": {
-       "type": "string",
-       "description": "The language of the original collection to be translated.",
-       "location": "query"
-      },
-      "targetLanguage": {
-       "type": "string",
-       "description": "Target language to translate the collection to. If no sourceLanguage is provided, the API will attempt to detect the language.",
-       "location": "query"
-      },
-      "timedTextLanguage": {
-       "type": "string",
-       "description": "The language of the timed text.",
-       "location": "query"
-      },
-      "timedTextTrackName": {
-       "type": "string",
-       "description": "The timed text track name.",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "request": {
-      "$ref": "Collection"
-     },
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "delete": {
-     "id": "orvos.collections.delete",
-     "path": "collections/{collectionId}",
-     "httpMethod": "DELETE",
-     "description": "Permanently deletes a collection by ID. Skips the trash.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to delete.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "get": {
-     "id": "orvos.collections.get",
-     "path": "collections/{collectionId}",
-     "httpMethod": "GET",
-     "description": "Gets a collection's metadata by ID.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID for the collection in question.",
-       "required": true,
-       "location": "path"
-      },
-      "projection": {
-       "type": "string",
-       "description": "This parameter is deprecated and has no function.",
-       "enum": [
-        "BASIC",
-        "FULL"
-       ],
-       "enumDescriptions": [
-        "Deprecated",
-        "Deprecated"
-       ],
-       "location": "query"
-      },
-      "updateViewedDate": {
-       "type": "boolean",
-       "description": "Whether to update the view date after successfully retrieving the collection.",
-       "default": "false",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.collections.insert",
-     "path": "collections",
-     "httpMethod": "POST",
-     "description": "Insert a new collection.",
-     "parameters": {
-      "convert": {
-       "type": "boolean",
-       "description": "Whether to convert this collection to the corresponding Google Docs format.",
-       "default": "false",
-       "location": "query"
-      },
-      "ocr": {
-       "type": "boolean",
-       "description": "Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.",
-       "default": "false",
-       "location": "query"
-      },
-      "ocrLanguage": {
-       "type": "string",
-       "description": "If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.",
-       "location": "query"
-      },
-      "pinned": {
-       "type": "boolean",
-       "description": "Whether to pin the head revision of the uploaded collection.",
-       "default": "false",
-       "location": "query"
-      },
-      "sourceLanguage": {
-       "type": "string",
-       "description": "The language of the original collection to be translated.",
-       "location": "query"
-      },
-      "targetLanguage": {
-       "type": "string",
-       "description": "Target language to translate the collection to. If no sourceLanguage is provided, the API will attempt to detect the language.",
-       "location": "query"
-      },
-      "timedTextLanguage": {
-       "type": "string",
-       "description": "The language of the timed text.",
-       "location": "query"
-      },
-      "timedTextTrackName": {
-       "type": "string",
-       "description": "The timed text track name.",
-       "location": "query"
-      }
-     },
-     "request": {
-      "$ref": "Collection"
-     },
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ],
-     "supportsMediaUpload": true,
-     "mediaUpload": {
-      "accept": [
-       "*/*"
-      ],
-      "maxSize": "10GB",
-      "protocols": {
-       "simple": {
-        "multipart": true,
-        "path": "/upload/orvos/v2/collections"
-       },
-       "resumable": {
-        "multipart": true,
-        "path": "/resumable/upload/orvos/v2/collections"
-       }
-      }
-     }
-    },
-    "list": {
-     "id": "orvos.collections.list",
-     "path": "collections",
-     "httpMethod": "GET",
-     "description": "Lists the user's collections.",
-     "parameters": {
-      "maxResults": {
-       "type": "integer",
-       "description": "Maximum number of collections to return.",
-       "default": "100",
-       "format": "int32",
-       "minimum": "0",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "Page token for collections.",
-       "location": "query"
-      },
-      "projection": {
-       "type": "string",
-       "description": "This parameter is deprecated and has no function.",
-       "enum": [
-        "BASIC",
-        "FULL"
-       ],
-       "enumDescriptions": [
-        "Deprecated",
-        "Deprecated"
-       ],
-       "location": "query"
-      },
-      "q": {
-       "type": "string",
-       "description": "Query string for searching collections.",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "CollectionList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "patch": {
-     "id": "orvos.collections.patch",
-     "path": "collections/{collectionId}",
-     "httpMethod": "PATCH",
-     "description": "Updates collection metadata and/or content. This method supports patch semantics.",
-     "parameters": {
-      "convert": {
-       "type": "boolean",
-       "description": "Whether to convert this collection to the corresponding Google Docs format.",
-       "default": "false",
-       "location": "query"
-      },
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to update.",
-       "required": true,
-       "location": "path"
-      },
-      "newRevision": {
-       "type": "boolean",
-       "description": "Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced.",
-       "default": "true",
-       "location": "query"
-      },
-      "ocr": {
-       "type": "boolean",
-       "description": "Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.",
-       "default": "false",
-       "location": "query"
-      },
-      "ocrLanguage": {
-       "type": "string",
-       "description": "If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.",
-       "location": "query"
-      },
-      "pinned": {
-       "type": "boolean",
-       "description": "Whether to pin the new revision.",
-       "default": "false",
-       "location": "query"
-      },
-      "setModifiedDate": {
-       "type": "boolean",
-       "description": "Whether to set the modified date with the supplied modified date.",
-       "default": "false",
-       "location": "query"
-      },
-      "sourceLanguage": {
-       "type": "string",
-       "description": "The language of the original collection to be translated.",
-       "location": "query"
-      },
-      "targetLanguage": {
-       "type": "string",
-       "description": "Target language to translate the collection to. If no sourceLanguage is provided, the API will attempt to detect the language.",
-       "location": "query"
-      },
-      "timedTextLanguage": {
-       "type": "string",
-       "description": "The language of the timed text.",
-       "location": "query"
-      },
-      "timedTextTrackName": {
-       "type": "string",
-       "description": "The timed text track name.",
-       "location": "query"
-      },
-      "updateViewedDate": {
-       "type": "boolean",
-       "description": "Whether to update the view date after successfully updating the collection.",
-       "default": "true",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "request": {
-      "$ref": "Collection"
-     },
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "touch": {
-     "id": "orvos.collections.touch",
-     "path": "collections/{collectionId}/touch",
-     "httpMethod": "POST",
-     "description": "Set the collection's updated time to the current server time.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to update.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "trash": {
-     "id": "orvos.collections.trash",
-     "path": "collections/{collectionId}/trash",
-     "httpMethod": "POST",
-     "description": "Moves a collection to the trash.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to trash.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "untrash": {
-     "id": "orvos.collections.untrash",
-     "path": "collections/{collectionId}/untrash",
-     "httpMethod": "POST",
-     "description": "Restores a collection from the trash.",
-     "parameters": {
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to untrash.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ]
-    },
-    "update": {
-     "id": "orvos.collections.update",
-     "path": "collections/{collectionId}",
-     "httpMethod": "PUT",
-     "description": "Updates collection metadata and/or content",
-     "parameters": {
-      "convert": {
-       "type": "boolean",
-       "description": "Whether to convert this collection to the corresponding Google Docs format.",
-       "default": "false",
-       "location": "query"
-      },
-      "collectionId": {
-       "type": "string",
-       "description": "The ID of the collection to update.",
-       "required": true,
-       "location": "path"
-      },
-      "newRevision": {
-       "type": "boolean",
-       "description": "Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced.",
-       "default": "true",
-       "location": "query"
-      },
-      "ocr": {
-       "type": "boolean",
-       "description": "Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.",
-       "default": "false",
-       "location": "query"
-      },
-      "ocrLanguage": {
-       "type": "string",
-       "description": "If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.",
-       "location": "query"
-      },
-      "pinned": {
-       "type": "boolean",
-       "description": "Whether to pin the new revision.",
-       "default": "false",
-       "location": "query"
-      },
-      "setModifiedDate": {
-       "type": "boolean",
-       "description": "Whether to set the modified date with the supplied modified date.",
-       "default": "false",
-       "location": "query"
-      },
-      "sourceLanguage": {
-       "type": "string",
-       "description": "The language of the original collection to be translated.",
-       "location": "query"
-      },
-      "targetLanguage": {
-       "type": "string",
-       "description": "Target language to translate the collection to. If no sourceLanguage is provided, the API will attempt to detect the language.",
-       "location": "query"
-      },
-      "timedTextLanguage": {
-       "type": "string",
-       "description": "The language of the timed text.",
-       "location": "query"
-      },
-      "timedTextTrackName": {
-       "type": "string",
-       "description": "The timed text track name.",
-       "location": "query"
-      },
-      "updateViewedDate": {
-       "type": "boolean",
-       "description": "Whether to update the view date after successfully updating the collection.",
-       "default": "true",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "collectionId"
-     ],
-     "request": {
-      "$ref": "Collection"
-     },
-     "response": {
-      "$ref": "Collection"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.collection"
-     ],
-     "supportsMediaUpload": true,
-     "mediaUpload": {
-      "accept": [
-       "*/*"
-      ],
-      "maxSize": "10GB",
-      "protocols": {
-       "simple": {
-        "multipart": true,
-        "path": "/upload/orvos/v2/collections/{collectionId}"
-       },
-       "resumable": {
-        "multipart": true,
-        "path": "/resumable/upload/orvos/v2/collections/{collectionId}"
-       }
-      }
-     }
-    }
-   }
-  },
-  "parents": {
-   "methods": {
-    "delete": {
-     "id": "orvos.parents.delete",
-     "path": "files/{fileId}/parents/{parentId}",
-     "httpMethod": "DELETE",
-     "description": "Removes a parent from a file.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "parentId": {
-       "type": "string",
-       "description": "The ID of the parent.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "parentId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "get": {
-     "id": "orvos.parents.get",
-     "path": "files/{fileId}/parents/{parentId}",
-     "httpMethod": "GET",
-     "description": "Gets a specific parent reference.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "parentId": {
-       "type": "string",
-       "description": "The ID of the parent.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "parentId"
-     ],
-     "response": {
-      "$ref": "ParentReference"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.parents.insert",
-     "path": "files/{fileId}/parents",
-     "httpMethod": "POST",
-     "description": "Adds a parent folder for a file.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "request": {
-      "$ref": "ParentReference"
-     },
-     "response": {
-      "$ref": "ParentReference"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "list": {
-     "id": "orvos.parents.list",
-     "path": "files/{fileId}/parents",
-     "httpMethod": "GET",
-     "description": "Lists a file's parents.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "response": {
-      "$ref": "ParentList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    }
-   }
-  },
-  "permissions": {
-   "methods": {
-    "delete": {
-     "id": "orvos.permissions.delete",
-     "path": "files/{fileId}/permissions/{permissionId}",
-     "httpMethod": "DELETE",
-     "description": "Deletes a permission from a file.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "permissionId": {
-       "type": "string",
-       "description": "The ID for the permission.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "permissionId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "get": {
-     "id": "orvos.permissions.get",
-     "path": "files/{fileId}/permissions/{permissionId}",
-     "httpMethod": "GET",
-     "description": "Gets a permission by ID.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "permissionId": {
-       "type": "string",
-       "description": "The ID for the permission.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "permissionId"
-     ],
-     "response": {
-      "$ref": "Permission"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.permissions.insert",
-     "path": "files/{fileId}/permissions",
-     "httpMethod": "POST",
-     "description": "Inserts a permission for a file.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "sendNotificationEmails": {
-       "type": "boolean",
-       "description": "Whether to send notification emails.",
-       "default": "true",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "request": {
-      "$ref": "Permission"
-     },
-     "response": {
-      "$ref": "Permission"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "list": {
-     "id": "orvos.permissions.list",
-     "path": "files/{fileId}/permissions",
-     "httpMethod": "GET",
-     "description": "Lists a file's permissions.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "response": {
-      "$ref": "PermissionList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "patch": {
-     "id": "orvos.permissions.patch",
-     "path": "files/{fileId}/permissions/{permissionId}",
-     "httpMethod": "PATCH",
-     "description": "Updates a permission. This method supports patch semantics.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "permissionId": {
-       "type": "string",
-       "description": "The ID for the permission.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "permissionId"
-     ],
-     "request": {
-      "$ref": "Permission"
-     },
-     "response": {
-      "$ref": "Permission"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "update": {
-     "id": "orvos.permissions.update",
-     "path": "files/{fileId}/permissions/{permissionId}",
-     "httpMethod": "PUT",
-     "description": "Updates a permission.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "permissionId": {
-       "type": "string",
-       "description": "The ID for the permission.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "permissionId"
-     ],
-     "request": {
-      "$ref": "Permission"
-     },
-     "response": {
-      "$ref": "Permission"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    }
-   }
-  },
-  "replies": {
-   "methods": {
-    "delete": {
-     "id": "orvos.replies.delete",
-     "path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
-     "httpMethod": "DELETE",
-     "description": "Deletes a reply.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "replyId": {
-       "type": "string",
-       "description": "The ID of the reply.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId",
-      "replyId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    },
-    "get": {
-     "id": "orvos.replies.get",
-     "path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
-     "httpMethod": "GET",
-     "description": "Gets a reply.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "replyId": {
-       "type": "string",
-       "description": "The ID of the reply.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId",
-      "replyId"
-     ],
-     "response": {
-      "$ref": "CommentReply"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "insert": {
-     "id": "orvos.replies.insert",
-     "path": "files/{fileId}/comments/{commentId}/replies",
-     "httpMethod": "POST",
-     "description": "Creates a new reply to the given comment.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "request": {
-      "$ref": "CommentReply"
-     },
-     "response": {
-      "$ref": "CommentReply"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    },
-    "list": {
-     "id": "orvos.replies.list",
-     "path": "files/{fileId}/comments/{commentId}/replies",
-     "httpMethod": "GET",
-     "description": "Lists all of the replies to a comment.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "maxResults": {
-       "type": "integer",
-       "description": "The maximum number of replies to include in the response, used for paging.",
-       "default": "20",
-       "format": "int32",
-       "minimum": "0",
-       "maximum": "100",
-       "location": "query"
-      },
-      "pageToken": {
-       "type": "string",
-       "description": "The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of \"nextPageToken\" from the previous response.",
-       "location": "query"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId"
-     ],
-     "response": {
-      "$ref": "CommentReplyList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "patch": {
-     "id": "orvos.replies.patch",
-     "path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
-     "httpMethod": "PATCH",
-     "description": "Updates an existing reply. This method supports patch semantics.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "replyId": {
-       "type": "string",
-       "description": "The ID of the reply.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId",
-      "replyId"
-     ],
-     "request": {
-      "$ref": "CommentReply"
-     },
-     "response": {
-      "$ref": "CommentReply"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    },
-    "update": {
-     "id": "orvos.replies.update",
-     "path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
-     "httpMethod": "PUT",
-     "description": "Updates an existing reply.",
-     "parameters": {
-      "commentId": {
-       "type": "string",
-       "description": "The ID of the comment.",
-       "required": true,
-       "location": "path"
-      },
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "replyId": {
-       "type": "string",
-       "description": "The ID of the reply.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "commentId",
-      "replyId"
-     ],
-     "request": {
-      "$ref": "CommentReply"
-     },
-     "response": {
-      "$ref": "CommentReply"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos"
-     ]
-    }
-   }
-  },
-  "revisions": {
-   "methods": {
-    "delete": {
-     "id": "orvos.revisions.delete",
-     "path": "files/{fileId}/revisions/{revisionId}",
-     "httpMethod": "DELETE",
-     "description": "Removes a revision.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionId": {
-       "type": "string",
-       "description": "The ID of the revision.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "revisionId"
-     ],
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "get": {
-     "id": "orvos.revisions.get",
-     "path": "files/{fileId}/revisions/{revisionId}",
-     "httpMethod": "GET",
-     "description": "Gets a specific revision.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionId": {
-       "type": "string",
-       "description": "The ID of the revision.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "revisionId"
-     ],
-     "response": {
-      "$ref": "Revision"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "list": {
-     "id": "orvos.revisions.list",
-     "path": "files/{fileId}/revisions",
-     "httpMethod": "GET",
-     "description": "Lists a file's revisions.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID of the file.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId"
-     ],
-     "response": {
-      "$ref": "RevisionList"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file",
-      "https://api.clinicalfuture.com/auth/orvos.metadata.readonly",
-      "https://api.clinicalfuture.com/auth/orvos.readonly"
-     ]
-    },
-    "patch": {
-     "id": "orvos.revisions.patch",
-     "path": "files/{fileId}/revisions/{revisionId}",
-     "httpMethod": "PATCH",
-     "description": "Updates a revision. This method supports patch semantics.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionId": {
-       "type": "string",
-       "description": "The ID for the revision.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "revisionId"
-     ],
-     "request": {
-      "$ref": "Revision"
-     },
-     "response": {
-      "$ref": "Revision"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    },
-    "update": {
-     "id": "orvos.revisions.update",
-     "path": "files/{fileId}/revisions/{revisionId}",
-     "httpMethod": "PUT",
-     "description": "Updates a revision.",
-     "parameters": {
-      "fileId": {
-       "type": "string",
-       "description": "The ID for the file.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionId": {
-       "type": "string",
-       "description": "The ID for the revision.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "fileId",
-      "revisionId"
-     ],
-     "request": {
-      "$ref": "Revision"
-     },
-     "response": {
-      "$ref": "Revision"
-     },
-     "scopes": [
-      "https://api.clinicalfuture.com/auth/orvos",
-      "https://api.clinicalfuture.com/auth/orvos.file"
-     ]
-    }
-   }
-  }
- }
-}