{"openapi":"3.1.0","info":{"title":"Ferrule Google Drive API","version":"1.0.0","description":"REST API for Google Drive via the Ferrule gateway.","contact":{"name":"Ferrule","url":"https://ferrule.io"}},"servers":[{"url":"https://0.0.0.0:3000","description":"Ferrule gateway"}],"paths":{"/api/v1/google-drive/files":{"get":{"operationId":"google-drive.list_files","description":"List files and folders in Google Drive. Optionally filter by parent folder ID. Returns file metadata including id, name, mimeType, and links.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"query","name":"folderId","schema":{"description":"ID of the parent folder to list files from. When provided, only files in this folder are returned.","type":"string"}},{"in":"query","name":"pageSize","schema":{"description":"Maximum number of files to return per page (1-1000, default 100).","type":"number"}},{"in":"query","name":"pageToken","schema":{"description":"Token for paginating through results.","type":"string"}},{"in":"query","name":"orderBy","schema":{"description":"Sort order (e.g. 'modifiedTime desc', 'name', 'folder,modifiedTime desc').","type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"files":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"nextPageToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"incompleteSearch":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}},"post":{"operationId":"google-drive.upload_file","description":"Upload a file to Google Drive. The file content must be provided as a base64-encoded string.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"query","name":"name","schema":{"type":"string","description":"The name for the uploaded file."}},{"in":"query","name":"content","schema":{"type":"string","description":"The file content as a base64-encoded string."}},{"in":"query","name":"mimeType","schema":{"type":"string","description":"The MIME type of the file (e.g. 'application/pdf')."}},{"in":"query","name":"folderId","schema":{"description":"ID of the parent folder to upload into.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Request body parameters"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/search":{"post":{"operationId":"google-drive.search_files","description":"Search for files and folders in Google Drive. Uses the Drive query syntax for the 'q' parameter (e.g. \"name contains 'report'\" or \"mimeType = 'application/vnd.google-apps.folder'\"). Returns file metadata including id, name, mimeType, and links.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"query","name":"q","schema":{"description":"Drive search query (e.g. \"name contains 'report'\", \"mimeType = 'application/vnd.google-apps.folder'\", \"'folderId' in parents\"). See Google Drive API query syntax.","type":"string"}},{"in":"query","name":"pageSize","schema":{"description":"Maximum number of files to return per page (1-1000, default 100).","type":"number"}},{"in":"query","name":"pageToken","schema":{"description":"Token for paginating through results.","type":"string"}},{"in":"query","name":"orderBy","schema":{"description":"Sort order (e.g. 'modifiedTime desc', 'name', 'folder,modifiedTime desc').","type":"string"}},{"in":"query","name":"corpora","schema":{"description":"Source of files: 'user', 'drive', 'domain', or 'allDrives' (default 'allDrives').","type":"string"}},{"in":"query","name":"driveId","schema":{"description":"ID of the shared drive to search. Required when corpora is 'drive'.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Request body parameters"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"files":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"nextPageToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"incompleteSearch":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}":{"get":{"operationId":"google-drive.get_file","description":"Get metadata for a single file or folder by its ID. Returns detailed file information including name, MIME type, size, timestamps, owners, and links.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file or folder to retrieve."},"required":true,"description":"The ID of the file or folder to retrieve."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}},"patch":{"operationId":"google-drive.rename_file","description":"Rename a file or folder in Google Drive.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file or folder to rename."},"required":true,"description":"The ID of the file or folder to rename."},{"in":"query","name":"newName","schema":{"type":"string","description":"The new name for the file or folder."}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Request body parameters"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}},"delete":{"operationId":"google-drive.trash_file","description":"Move a file or folder to the trash in Google Drive. The file can be recovered from the trash within 30 days.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file or folder to trash."},"required":true,"description":"The ID of the file or folder to trash."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}/content":{"get":{"operationId":"google-drive.get_file_content","description":"Get the content of a file. For Google Docs, exports as plain text. For Google Sheets, exports as CSV. For other Google Workspace types, exports in a suitable text format. For binary files (PDFs, images, etc.), returns a download URL instead of inline content.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file to get content from."},"required":true,"description":"The ID of the file to get content from."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}/export":{"get":{"operationId":"google-drive.export_file","description":"Export a Google Workspace file (Docs, Sheets, Slides, Drawings) to a specified MIME type. For example, export a Google Doc as 'application/pdf' or 'text/html', or a Sheet as 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the Google Workspace file to export."},"required":true,"description":"The ID of the Google Workspace file to export."},{"in":"query","name":"mimeType","schema":{"type":"string","description":"The MIME type to export to (e.g. 'application/pdf', 'text/html', 'text/csv', 'text/plain')."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/folders":{"post":{"operationId":"google-drive.create_folder","description":"Create a new folder in Google Drive. Optionally specify a parent folder.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"query","name":"name","schema":{"type":"string","description":"The name for the new folder."}},{"in":"query","name":"parentId","schema":{"description":"ID of the parent folder to create the folder in.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Request body parameters"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}/move":{"post":{"operationId":"google-drive.move_file","description":"Move a file or folder to a different parent folder in Google Drive. By default removes the file from its current parent.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file or folder to move."},"required":true,"description":"The ID of the file or folder to move."},{"in":"query","name":"newParentId","schema":{"type":"string","description":"The ID of the destination parent folder."}},{"in":"query","name":"removeFromCurrentParent","schema":{"description":"Whether to remove the file from its current parent folder (default true).","type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Request body parameters"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parents":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"webViewLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"webContentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnailLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"shared":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"capabilities":{"anyOf":[{"type":"object","properties":{"canEdit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canComment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canShare":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canCopy":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"canDownload":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/shared-drives":{"get":{"operationId":"google-drive.list_shared_drives","description":"List all shared drives (Team Drives) the authenticated user has access to.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"query","name":"pageSize","schema":{"description":"Maximum number of shared drives to return per page (1-100, default 100).","type":"number"}},{"in":"query","name":"pageToken","schema":{"description":"Token for paginating through results.","type":"string"}},{"in":"query","name":"q","schema":{"description":"Query string for searching shared drives (e.g. \"name contains 'Marketing'\").","type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"drives":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdTime":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"nextPageToken":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}/revisions":{"get":{"operationId":"google-drive.list_revisions","description":"List historical revisions of a file in Google Drive. Returns revision metadata including id, mimeType, modifiedTime, size, and (for Google-native types) exportLinks that can be used to fetch revision content.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file whose revisions should be listed."},"required":true,"description":"The ID of the file whose revisions should be listed."},{"in":"query","name":"pageSize","schema":{"description":"Maximum number of revisions to return per page (1-1000, default 200).","type":"number"}},{"in":"query","name":"pageToken","schema":{"description":"Token for paginating through results.","type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"revisions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}]},"modifiedTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"keepForever":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"originalFilename":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"string"},{"type":"null"}]},"md5Checksum":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastModifyingUser":{"anyOf":[{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"photoLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"me":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"permissionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"exportLinks":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"publishedLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishAuto":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"publishedOutsideDomain":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"nextPageToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}},"/api/v1/google-drive/files/{fileId}/revisions/{revisionId}/content":{"get":{"operationId":"google-drive.get_revision_content","description":"Get the content of a specific revision of a file. For Google Workspace types (Docs, Sheets, Slides, Drawings), exports the revision as text and inlines it if small enough; otherwise returns metadata with a downloadPath for REST retrieval. For binary files, returns metadata only and a downloadPath the caller can fetch via the REST API. When called via REST, the raw revision bytes are streamed as an HTTP attachment.","tags":["google-drive"],"security":[{"oauth2":[]},{"bearerApiKey":[]}],"parameters":[{"in":"path","name":"fileId","schema":{"type":"string","description":"The ID of the file whose revision should be fetched."},"required":true,"description":"The ID of the file whose revision should be fetched."},{"in":"path","name":"revisionId","schema":{"type":"string","description":"The ID of the revision to fetch."},"required":true,"description":"The ID of the revision to fetch."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"}},"required":["error","code","message"],"additionalProperties":false}}}}}}}},"webhooks":{},"components":{"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"/oauth/authorize","tokenUrl":"/oauth/token","scopes":{}}}},"bearerApiKey":{"type":"http","scheme":"bearer","description":"API key authentication. Pass a Ferrule API key as a Bearer token."}}}}