> ## Documentation Index
> Fetch the complete documentation index at: https://developer.hubfluence.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Email Integration

> Endpoints for email account management and operations

## Authentication

### Initiate Authorization

<ParamField query="GET /auth/email">
  Initiate email integration authorization
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

Redirects to email provider's OAuth page

### Authorization Callback

<ParamField query="GET /email/callback">
  Callback endpoint for email authorization
</ParamField>

#### Parameters

<ParamField query="code" type="string" required>
  OAuth authorization code
</ParamField>

<ParamField query="state" type="string" required>
  State parameter for security verification
</ParamField>

#### Response

Redirects to success or error page with status

## Account Management

### List Accounts

<ParamField query="GET /email/accounts">
  Get connected email accounts
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

<ResponseField name="accounts" type="array">
  List of connected email accounts
</ResponseField>

```json
{
  "accounts": [
    {
      "id": "account123",
      "email": "user@example.com",
      "provider": "gmail",
      "connected": true,
      "lastSync": "2024-03-14T12:00:00Z"
    }
  ]
}
```

### Disconnect Account

<ParamField query="DELETE /email/accounts/:accountId">
  Disconnect an email account
</ParamField>

#### Parameters

<ParamField path="accountId" type="string" required>
  ID of the email account to disconnect
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "message": "Account disconnected successfully",
  "accountId": "account123"
}
```

### Refresh Token

<ParamField query="POST /email/accounts/:accountId/refresh">
  Refresh token for an email account
</ParamField>

#### Parameters

<ParamField path="accountId" type="string" required>
  ID of the email account
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "message": "Token refreshed successfully",
  "expiresAt": "2024-04-14T12:00:00Z"
}
```

## Email Operations

### Send Email

<ParamField query="POST /email/accounts/:accountId/send">
  Send an email through a connected account
</ParamField>

#### Parameters

<ParamField path="accountId" type="string" required>
  ID of the email account to send from
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Request Body

```json
{
  "to": ["recipient@example.com"],
  "cc": ["cc@example.com"],
  "bcc": ["bcc@example.com"],
  "subject": "Email Subject",
  "body": {
    "text": "Plain text version",
    "html": "<p>HTML version</p>"
  },
  "attachments": [
    {
      "filename": "document.pdf",
      "content": "base64_encoded_content"
    }
  ]
}
```

#### Response

```json
{
  "message": "Email sent successfully",
  "messageId": "msg123",
  "timestamp": "2024-03-14T12:00:00Z"
}
```
