{"formatVersion":"1","kind":"dock_integration","slug":"drive","title":"Google Drive","summary":"Import a Harbor-safe Google Drive starter set with query-aware file, search, shared drive, and permission actions.","description":"A Dock-hosted Google Drive starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe Google Drive action set that uses Harbor's Action Model for typed query parameters on file listing, search, shared drive, and permission reads.","version":"0.3.0","publisher":{"slug":"google","name":"Google","websiteUrl":"https://developers.google.com/workspace/drive/api"},"category":"Storage","tags":["google","drive","storage","files","productivity"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import. Templates use location-based inputs such as input.path, input.query, and input.body at execution time."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"Google Drive API","description":"Google Drive API connection managed locally through Harbor.","baseUrl":"https://www.googleapis.com/","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"list-files","label":"List Files","description":"List files visible to the authenticated Google Drive account using typed query inputs for pagination and ordering.","method":"GET","path":"/drive/v3/files","inputs":{"parameters":[{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000},"default":100,"description":"Maximum number of files to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Drive list response."},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["createdTime desc","modifiedTime desc","name"]},"description":"Drive-supported ordering for the returned files."}],"staticQuery":{"supportsAllDrives":true,"includeItemsFromAllDrives":true,"fields":"files(id,name,mimeType,parents,modifiedTime,size),nextPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-about","label":"Get About","description":"Fetch Drive account and storage information for the authenticated user using a stable response profile.","method":"GET","path":"/drive/v3/about","inputs":{"staticQuery":{"fields":"user,storageQuota,importFormats,exportFormats,maxImportSizes,maxUploadSize"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-file-metadata","label":"Get File Metadata","description":"Fetch metadata for a specific Google Drive file using Action Model path inputs plus safe static query defaults.","method":"GET","path":"/drive/v3/files/{fileId}","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."}],"staticQuery":{"supportsAllDrives":true,"fields":"id,name,mimeType,parents,modifiedTime,size,webViewLink,iconLink"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-file-revisions","label":"List File Revisions","description":"List revisions for a specific Google Drive file using explicit file identifiers and typed pagination inputs.","method":"GET","path":"/drive/v3/files/{fileId}/revisions","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":200},"default":50,"description":"Maximum number of revisions to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous revisions list response."}],"staticQuery":{"fields":"revisions(id,modifiedTime,keepForever,size,lastModifyingUser),nextPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"search-files","label":"Search Files","description":"Search Google Drive files with typed query inputs while keeping the request URL fully Harbor-owned.","method":"GET","path":"/drive/v3/files","inputs":{"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500},"description":"Google Drive search expression."},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000},"default":100,"description":"Maximum number of files to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Drive search response."},{"name":"orderBy","in":"query","schema":{"type":"string","enum":["createdTime desc","modifiedTime desc","name","recency desc"]},"description":"Drive-supported ordering for search results."}],"staticQuery":{"supportsAllDrives":true,"includeItemsFromAllDrives":true,"fields":"files(id,name,mimeType,parents,modifiedTime,size),nextPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-changes","label":"List Changes","description":"List Google Drive changes from an explicit start page token with typed pagination inputs.","method":"GET","path":"/drive/v3/changes","inputs":{"parameters":[{"name":"pageToken","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"Start page token or continuation token from a previous Drive changes response."},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000},"default":100,"description":"Maximum number of changes to return."}],"staticQuery":{"supportsAllDrives":true,"includeItemsFromAllDrives":true,"fields":"changes(fileId,file(id,name,mimeType,modifiedTime),removed,time),nextPageToken,newStartPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-shared-drives","label":"List Shared Drives","description":"List shared drives visible to the authenticated Google Drive account with typed pagination inputs.","method":"GET","path":"/drive/v3/drives","inputs":{"parameters":[{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":25,"description":"Maximum number of shared drives to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous shared drive list response."}],"staticQuery":{"fields":"drives(id,name,hidden,createdTime),nextPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-shared-drive","label":"Get Shared Drive","description":"Fetch metadata for a specific shared drive using Action Model path inputs and a stable response profile.","method":"GET","path":"/drive/v3/drives/{driveId}","inputs":{"parameters":[{"name":"driveId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Shared drive ID."}],"staticQuery":{"fields":"id,name,hidden,createdTime,restrictions,capabilities"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-start-page-token","label":"Get Start Page Token","description":"Fetch the Google Drive changes start page token with safe all-drives support enabled.","method":"GET","path":"/drive/v3/changes/startPageToken","inputs":{"staticQuery":{"supportsAllDrives":true}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-file-permissions","label":"List File Permissions","description":"List permissions for a specific Google Drive file or shared drive using Action Model path and query inputs.","method":"GET","path":"/drive/v3/files/{fileId}/permissions","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"File or shared drive ID."},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":100,"description":"Maximum number of permissions to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous permissions list response."}],"staticQuery":{"supportsAllDrives":true,"fields":"permissions(id,type,role,emailAddress,domain),nextPageToken"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"update-file-metadata","label":"Update File Metadata","description":"Update metadata for a specific Google Drive file using an explicit file ID and a bounded JSON request body.","method":"PATCH","path":"/drive/v3/files/{fileId}","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"delete-file","label":"Delete File","description":"Delete a Google Drive file using an explicit file ID.","method":"DELETE","path":"/drive/v3/files/{fileId}","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-permission","label":"Create Permission","description":"Create a permission on a specific Google Drive file using an explicit file ID and a bounded JSON request body.","method":"POST","path":"/drive/v3/files/{fileId}/permissions","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-permission","label":"Update Permission","description":"Update a permission on a specific Google Drive file using explicit file and permission identifiers with a bounded JSON request body.","method":"PATCH","path":"/drive/v3/files/{fileId}/permissions/{permissionId}","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."},{"name":"permissionId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive permission ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"delete-permission","label":"Delete Permission","description":"Delete a permission from a specific Google Drive file using explicit file and permission identifiers.","method":"DELETE","path":"/drive/v3/files/{fileId}/permissions/{permissionId}","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive file ID."},{"name":"permissionId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Google Drive permission ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"empty-trash","label":"Empty Trash","description":"Empty the authenticated user's Google Drive trash.","method":"DELETE","path":"/drive/v3/files/trash","approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-folder","label":"Create Folder","description":"Create a Google Drive folder using the Action Model with a JSON input.body payload and safe static defaults.","method":"POST","path":"/drive/v3/files","inputs":{"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"copy-file","label":"Copy File","description":"Copy an existing Google Drive file using Action Model path inputs, static query defaults, and a JSON input.body payload.","method":"POST","path":"/drive/v3/files/{fileId}/copy","inputs":{"parameters":[{"name":"fileId","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Source Google Drive file ID."}],"staticQuery":{"supportsAllDrives":true}},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"}],"workflowTemplates":[{"slug":"shared-drive-review","title":"Shared Drive Review","summary":"Future workflow template for reviewing shared drive contents and permissions."}],"helpText":"Import to Harbor, configure local auth, then validate, test, and publish the Google Drive actions you need. Drive actions use input.path, input.query, and input.body so path and query values stay explicit and reviewable. Keep create-folder and copy-file approval-friendly unless local policy explicitly allows them.","installNotes":"Dock shares only safe metadata. Hidden auth must be configured locally inside Harbor after import. This Drive starter set uses Harbor's Action Model for typed query parameters, so list and search actions no longer need raw query-string handling."}