Skip to main content

Attachments & Drive Shares

Attachments

Attachment upload and download via /mail/v4/attachments.

Upload

attachment, err := c.UploadAttachment(ctx, addrKR, proton.CreateAttachmentReq{
    MessageID:  "message-id",
    Filename:   "document.pdf",
    MIMEType:   "application/pdf",
    Disposition: proton.AttachmentDisposition,
    Body:       fileBytes,
})

Upload is encrypted with the address keyring and signed (detached) before upload. The server stores the encrypted KeyPacket, DataPacket, and Signature separately.

Download

// Download as bytes
data, err := c.GetAttachment(ctx, attachmentID)

// Stream into io.ReaderFrom
err := c.GetAttachmentInto(ctx, attachmentID, reader)

Key Types

Type Description
Attachment ID, name, size, MIME type, disposition (inline/attachment), headers, key packets, signature
CreateAttachmentReq MessageID, filename, MIME type, disposition, content ID, body bytes
Disposition InlineDisposition, AttachmentDisposition

Drive Shares

Proton Drive share management via /drive/shares.

Operations

// List shares
shares, err := c.ListShares(ctx, all)

// Get a single share with full key material
share, err := c.GetShare(ctx, shareID)

Key Derivation

Shares use a two-step PGP decryption + passphrase unlock process:

// Decrypt passphrase with address keyring, verify signature, unlock share key
keyRing, err := share.GetKeyRing(addrKR)
// Returns *crypto.KeyRing for Drive access

Key Types

Type Description
ShareMetadata ShareID, linkID, volumeID, type, state, creation/modify times, creator email
Share Extends metadata with addressID, addressKeyID, encrypted key, passphrase, passphrase signature
ShareType Main (1), Standard (2), Device (3)
ShareState Active (1), Deleted (2)