{"formatVersion":"1","kind":"dock_integration","slug":"gmail","title":"Gmail","summary":"Import a stronger Gmail starter set with mailbox, settings, draft, and send actions on Harbor's Action Model.","description":"A Dock-hosted Gmail starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe Gmail action set that covers common mailbox reads, typed mailbox list filters, and a small set of explicit write actions.","version":"0.3.0","publisher":{"slug":"google","name":"Google","websiteUrl":"https://developers.google.com/workspace/gmail/api"},"category":"Email","tags":["google","gmail","email","productivity"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"Gmail API","description":"Gmail API connection managed locally through Harbor.","baseUrl":"https://gmail.googleapis.com/","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"get-profile","label":"Get Gmail Profile","description":"Fetch the authenticated Gmail profile for the local account.","method":"GET","path":"/gmail/v1/users/me/profile","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-labels","label":"List Gmail Labels","description":"List Gmail labels for the local account.","method":"GET","path":"/gmail/v1/users/me/labels","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-messages","label":"List Gmail Messages","description":"List message references for the local Gmail account using typed mailbox query inputs.","method":"GET","path":"/gmail/v1/users/me/messages","inputs":{"parameters":[{"name":"maxResults","in":"query","schema":{"type":"integer","minimum":1,"maximum":500},"default":100,"description":"Maximum number of message references to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Gmail message list response."},{"name":"labelIds","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Optional Gmail label IDs used to filter the list."},{"name":"q","in":"query","schema":{"type":"string","maxLength":500},"description":"Optional Gmail search query."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-message","label":"Get Gmail Message","description":"Fetch a specific Gmail message using an explicit message ID and typed format controls.","method":"GET","path":"/gmail/v1/users/me/messages/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail message ID."},{"name":"format","in":"query","schema":{"type":"string","enum":["minimal","full","metadata","raw"]},"description":"Message representation to return."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-threads","label":"List Gmail Threads","description":"List thread references for the local Gmail account using typed mailbox query inputs.","method":"GET","path":"/gmail/v1/users/me/threads","inputs":{"parameters":[{"name":"maxResults","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":50,"description":"Maximum number of thread references to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Gmail thread list response."},{"name":"labelIds","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Optional Gmail label IDs used to filter the list."},{"name":"q","in":"query","schema":{"type":"string","maxLength":500},"description":"Optional Gmail search query."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-thread","label":"Get Gmail Thread","description":"Fetch a specific Gmail thread using an explicit thread ID and typed format controls.","method":"GET","path":"/gmail/v1/users/me/threads/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail thread ID."},{"name":"format","in":"query","schema":{"type":"string","enum":["minimal","full","metadata"]},"description":"Thread representation to return."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-drafts","label":"List Gmail Drafts","description":"List draft message references for the local Gmail account with typed pagination inputs.","method":"GET","path":"/gmail/v1/users/me/drafts","inputs":{"parameters":[{"name":"maxResults","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":50,"description":"Maximum number of draft references to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Gmail draft list response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-draft","label":"Get Gmail Draft","description":"Fetch a specific Gmail draft using an explicit draft ID and typed format controls.","method":"GET","path":"/gmail/v1/users/me/drafts/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail draft ID."},{"name":"format","in":"query","schema":{"type":"string","enum":["minimal","full","metadata","raw"]},"description":"Draft message representation to return."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-label","label":"Get Gmail Label","description":"Fetch a specific Gmail label using an explicit label ID.","method":"GET","path":"/gmail/v1/users/me/labels/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail label ID."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-history","label":"List Gmail History","description":"List mailbox history records after an explicit starting history ID.","method":"GET","path":"/gmail/v1/users/me/history","inputs":{"parameters":[{"name":"startHistoryId","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"Mailbox history ID to continue from."},{"name":"labelId","in":"query","schema":{"type":"string"},"description":"Optional label filter."},{"name":"historyTypes","in":"query","schema":{"type":"array","items":{"type":"string","enum":["messageAdded","messageDeleted","labelAdded","labelRemoved"]}},"description":"Optional mailbox history event-type filter."},{"name":"maxResults","in":"query","schema":{"type":"integer","minimum":1,"maximum":500},"description":"Maximum number of history records to return."},{"name":"pageToken","in":"query","schema":{"type":"string"},"description":"Continuation token from a previous Gmail history response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-send-as-identities","label":"List Send-As Identities","description":"List Gmail send-as identities and aliases for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/sendAs","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-forwarding-addresses","label":"List Forwarding Addresses","description":"List forwarding addresses configured for the authenticated Gmail account.","method":"GET","path":"/gmail/v1/users/me/settings/forwardingAddresses","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-filters","label":"List Gmail Filters","description":"List Gmail filter definitions configured for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/filters","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-auto-forwarding","label":"Get Auto Forwarding Settings","description":"Fetch Gmail auto-forwarding settings for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/autoForwarding","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-imap-settings","label":"Get IMAP Settings","description":"Fetch Gmail IMAP settings for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/imap","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-language-settings","label":"Get Language Settings","description":"Fetch Gmail display language settings for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/language","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-pop-settings","label":"Get POP Settings","description":"Fetch Gmail POP settings for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/pop","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-vacation-settings","label":"Get Vacation Settings","description":"Fetch Gmail vacation responder settings for the authenticated account.","method":"GET","path":"/gmail/v1/users/me/settings/vacation","approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-draft","label":"Create Gmail Draft","description":"Create a Gmail draft message using a bounded JSON payload and Harbor-managed local auth.","method":"POST","path":"/gmail/v1/users/me/drafts","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-draft","label":"Update Gmail Draft","description":"Update a specific Gmail draft using an explicit draft ID and a bounded JSON request body.","method":"PUT","path":"/gmail/v1/users/me/drafts/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail draft ID."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"delete-draft","label":"Delete Gmail Draft","description":"Delete a specific Gmail draft using an explicit draft ID.","method":"DELETE","path":"/gmail/v1/users/me/drafts/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail draft ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"modify-message","label":"Modify Gmail Message","description":"Modify labels on a specific Gmail message using an explicit message ID and a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/messages/{id}/modify","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail message ID."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"trash-message","label":"Trash Gmail Message","description":"Move a specific Gmail message to trash using an explicit message ID.","method":"POST","path":"/gmail/v1/users/me/messages/{id}/trash","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail message ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"untrash-message","label":"Untrash Gmail Message","description":"Restore a specific Gmail message from trash using an explicit message ID.","method":"POST","path":"/gmail/v1/users/me/messages/{id}/untrash","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail message ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"delete-message","label":"Delete Gmail Message","description":"Permanently delete a specific Gmail message using an explicit message ID.","method":"DELETE","path":"/gmail/v1/users/me/messages/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail message ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"batch-delete-messages","label":"Batch Delete Gmail Messages","description":"Permanently delete multiple Gmail messages using a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/messages/batchDelete","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"batch-modify-messages","label":"Batch Modify Gmail Messages","description":"Modify labels on multiple Gmail messages using a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/messages/batchModify","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"modify-thread","label":"Modify Gmail Thread","description":"Modify labels on a specific Gmail thread using an explicit thread ID and a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/threads/{id}/modify","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail thread ID."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"trash-thread","label":"Trash Gmail Thread","description":"Move a specific Gmail thread to trash using an explicit thread ID.","method":"POST","path":"/gmail/v1/users/me/threads/{id}/trash","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail thread ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"untrash-thread","label":"Untrash Gmail Thread","description":"Restore a specific Gmail thread from trash using an explicit thread ID.","method":"POST","path":"/gmail/v1/users/me/threads/{id}/untrash","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail thread ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"delete-thread","label":"Delete Gmail Thread","description":"Permanently delete a specific Gmail thread using an explicit thread ID.","method":"DELETE","path":"/gmail/v1/users/me/threads/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail thread ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"send-message","label":"Send Gmail Message","description":"Send a Gmail message using a bounded JSON payload and Harbor-managed local auth.","method":"POST","path":"/gmail/v1/users/me/messages/send","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"send-draft","label":"Send Gmail Draft","description":"Send an existing Gmail draft using a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/drafts/send","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-label","label":"Update Gmail Label","description":"Update a Gmail label using an explicit label ID and a bounded JSON request body.","method":"PATCH","path":"/gmail/v1/users/me/labels/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail label ID."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"create-label","label":"Create Gmail Label","description":"Create a Gmail label for the authenticated account.","method":"POST","path":"/gmail/v1/users/me/labels","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"delete-label","label":"Delete Gmail Label","description":"Delete a Gmail label using an explicit label ID.","method":"DELETE","path":"/gmail/v1/users/me/labels/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Gmail label ID."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-filter","label":"Create Gmail Filter","description":"Create a Gmail filter rule for the authenticated account.","method":"POST","path":"/gmail/v1/users/me/settings/filters","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"create-forwarding-address","label":"Create Forwarding Address","description":"Create a Gmail forwarding address for the authenticated account.","method":"POST","path":"/gmail/v1/users/me/settings/forwardingAddresses","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-imap-settings","label":"Update IMAP Settings","description":"Update Gmail IMAP settings for the authenticated account using a bounded JSON request body.","method":"PUT","path":"/gmail/v1/users/me/settings/imap","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-pop-settings","label":"Update POP Settings","description":"Update Gmail POP settings for the authenticated account using a bounded JSON request body.","method":"PUT","path":"/gmail/v1/users/me/settings/pop","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-vacation-settings","label":"Update Vacation Settings","description":"Update Gmail vacation responder settings for the authenticated account using a bounded JSON request body.","method":"PUT","path":"/gmail/v1/users/me/settings/vacation","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"watch-mailbox","label":"Watch Mailbox","description":"Start Gmail mailbox watch notifications using a bounded JSON request body.","method":"POST","path":"/gmail/v1/users/me/watch","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"stop-watch","label":"Stop Mailbox Watch","description":"Stop Gmail mailbox watch notifications for the authenticated account.","method":"POST","path":"/gmail/v1/users/me/stop","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"}],"workflowTemplates":[{"slug":"triage-inbox","title":"Triage Inbox","summary":"Future workflow template for inbox triage."}],"helpText":"Import to Harbor, configure local auth, then validate, test, and publish the Gmail actions you need. Use `input.query` for mailbox list filters where present, and review send/create actions carefully.","installNotes":"Dock shares only safe metadata. Hidden auth must be configured locally inside Harbor after import. Gmail actions here use Harbor's Action Model, with fixed /users/me routes, typed list filters under `input.query`, and JSON writes under `input.body`."}