# API

**Kind**: interface | **Module**: [Outlook](https://docs.interop.io/adapters/reference/javascript/outlook/index.md) | **Access**: `io.outlook`

**Source**: https://docs.interop.io/adapters/reference/javascript/outlook/api/index.html

Outlook API.

## Properties

- **`addinStatus`** (`boolean`, required)
  Flag indicating the status of the Outlook Adapter. If `true`, the Outlook Adapter is available and you can use the Outlook API.

## Methods

### attachmentFromJSON

Converts attachment object to Attachment with method `getData()` but without the `parent` property.

```ts
(attachment: T42Attachment) => Attachment
```

**Parameters**

- **`attachment`** (`T42Attachment`, required)
  The raw attachment object to convert.

**Returns**: `Attachment`

### createLocalEmail

Creates new local email.

```ts
(localEmailParams: LocalEmailParams) => Promise<Email>
```

**Parameters**

- **`localEmailParams`** (`LocalEmailParams`, required)
  Parameters for the local email.

**Returns**: `Promise<Email>`

**Example**

```ts
```javascript
const email = await outlook.createLocalEmail({
    sender: "emailAddress@mail.com",
    to: "emailAddress@mail.com",
    subject: "Sample body",
    location: "$Inbox"
});

console.log(email);
```
```

### emailFromJSON

Converts email object to Email with methods: `getAsMsg()`, `saveToFile()`, `show()`, `track()` and `untrack()`.

```ts
(email: T42Email) => Email
```

**Parameters**

- **`email`** (`T42Email`, required)
  The raw email object to convert.

**Returns**: `Email`

### newEmail

Creates new email window.

```ts
(emailParams?: EmailParams, options?: NewEmailOptions) => Promise<void>
```

**Parameters**

- **`emailParams`** (`EmailParams`, optional)
  Optional email parameters (recipients, subject, body, attachments, etc.).
- **`options`** (`NewEmailOptions`, optional)
  Optional callbacks and display settings.

**Returns**: `Promise<void>`

**Example**

```ts
```javascript
await outlook.newEmail(
    {
        to: "emailAddress@mail.com",
        subject: "Sample subject",
        body: "Sample body",
        attachments: [{
            fileName: "attachmentFileName.txt",
            data: "Sample text"
        }]
    },
    {
        onSent: (email) => console.log(email),
        onCanceled: () => console.log("canceled"),
    }
);
```
```

### newTask

Creates new task window.

```ts
(taskParams?: TaskParams, options?: NewTaskOptions) => Promise<void>
```

**Parameters**

- **`taskParams`** (`TaskParams`, optional)
  Optional task parameters (subject, body, priority, etc.).
- **`options`** (`NewTaskOptions`, optional)
  Optional callbacks and display settings.

**Returns**: `Promise<void>`

**Example**

```ts
```javascript
await outlook.newTask(
    {
        subject: "Sample subject",
        body: "Sample body",
        priority: "high",
        dueDate: new Date("2017-07-01")
    },
    {
        onSaved: (task) => console.log(task),
        onCanceled: () => console.log("canceled")
    }
);
```
```

### onAddinStatusChanged

Notifies when the Outlook Adapter status has changed. Immediately invokes the callback with the current status. Returns an unsubscribe function.

```ts
(callback: (args: { connected: boolean }) => any) => () => void
```

**Parameters**

- **`callback`** (`(args: { connected: boolean }) => any`, required)
  Callback function for handling the event.
  Receives as an argument an object with a `connected` Boolean property indicating the status of the Outlook Adapter.

**Returns**: `() => void`

**Example**

```ts
```javascript
outlook.onAddinStatusChanged(({ connected }) => {
    console.log(`Outlook is ${connected ? "available" : "unavailable"}.`);
});
```
```

### onDisplaySecureEmail

Notifies on a request for a local email to be displayed. Returns an unsubscribe function.

```ts
(callback: (email: Email) => any) => void
```

**Parameters**

- **`callback`** (`(email: Email) => any`, required)
  Callback function for handling the event. Receives the email as an argument.

**Returns**: `void`

### onEmailReceived

Notifies when an email is received in the HandleEmail folder. Returns an unsubscribe function.

```ts
(callback: (email: Email) => any) => void
```

**Parameters**

- **`callback`** (`(email: Email) => any`, required)
  Callback function for handling the event. Receives the received email as an argument.

**Returns**: `void`

**Example**

```ts
```javascript
outlook.onEmailReceived((email) => console.log("An email was received.", email));
```
```

### onSecureReply

Notifies on secure reply to a local email. Returns an unsubscribe function.

```ts
(callback: (email: Email) => any) => void
```

**Parameters**

- **`callback`** (`(email: Email) => any`, required)
  Callback function for handling the event. Receives the email as an argument.

**Returns**: `void`

### onTaskCreated

Notifies when a task is created. Returns an unsubscribe function.

```ts
(callback: (task: Task) => any) => void
```

**Parameters**

- **`callback`** (`(task: Task) => any`, required)
  Callback function for handling the event. Receives the created task as an argument.

**Returns**: `void`

**Example**

```ts
```javascript
outlook.onTaskCreated((task) => console.log("A task was created.", task));
```
```

### onTrackCalendarEvent

Notifies when an appointment or meeting gets tracked. Returns an unsubscribe function. Only one subscriber is allowed at a time.

```ts
(callback: (args: { conversationIds: T42Id[], event: T42Appointment | T42Meeting }) => any) => void
```

**Parameters**

- **`callback`** (`(args: { conversationIds: T42Id[], event: T42Appointment | T42Meeting }) => any`, required)
  Callback function for handling the event. Receives an object with `conversationIds` and `event` as an argument.

**Returns**: `void`

### onTrackEmail

Notifies when an email gets tracked. Returns an unsubscribe function. Only one subscriber is allowed at a time.

```ts
(callback: (args: { conversationIds: T42Id[], email: Email }) => any) => void
```

**Parameters**

- **`callback`** (`(args: { conversationIds: T42Id[], email: Email }) => any`, required)
  Callback function for handling the event. Receives an object with `conversationIds` and `email` as an argument.

**Returns**: `void`

### onUntrackCalendarEvent

Notifies when an appointment or meeting gets untracked. Returns an unsubscribe function. Only one subscriber is allowed at a time.

```ts
(callback: (args: { conversationIds: T42Id[], eventIds: T42Id[] }) => any) => void
```

**Parameters**

- **`callback`** (`(args: { conversationIds: T42Id[], eventIds: T42Id[] }) => any`, required)
  Callback function for handling the event. Receives an object with `conversationIds` and `eventIds` as an argument.

**Returns**: `void`

### onUntrackEmail

Notifies when an email gets untracked. Returns an unsubscribe function. Only one subscriber is allowed at a time.

```ts
(callback: (args: { conversationIds: T42Id[], emailIds: T42Id[] }) => any) => void
```

**Parameters**

- **`callback`** (`(args: { conversationIds: T42Id[], emailIds: T42Id[] }) => any`, required)
  Callback function for handling the event. Receives an object with `conversationIds` and `emailIds` as an argument.

**Returns**: `void`

### ready

Resolves immediately with the Outlook API object.

```ts
() => Promise<API>
```

**Returns**: `Promise<API>`

### showEmail

Shows email in Outlook.

```ts
(ids: T42Id[]) => Promise<T42Id[]>
```

**Parameters**

- **`ids`** (`T42Id[]`, required)
  The identifiers of the email to show.

**Returns**: `Promise<T42Id[]>`

**Example**

```ts
```javascript
await outlook.newEmail(
    {
        to: "emailAddress@mail.com",
        subject: "Sample subject",
        body: "Sample body"
    },
    {
        onSent: async (email) => {
            const ids = await outlook.showEmail(email.ids);
            console.log(ids);
        }
    }
);
```
```

### showTask

Shows task in Outlook.

```ts
(ids: T42Id[]) => Promise<T42Id[]>
```

**Parameters**

- **`ids`** (`T42Id[]`, required)
  The identifiers of the task to show.

**Returns**: `Promise<T42Id[]>`

### taskFromJSON

Converts task object to Task with methods `saveToFile()` and `show()`.

```ts
(task: T42Task) => Task
```

**Parameters**

- **`task`** (`T42Task`, required)
  The raw task object to convert.

**Returns**: `Task`

### trackCalendarEvent

Tracks appointment or meeting.

```ts
(event: T42Appointment | T42Meeting, conversationId?: T42Id) => Promise<{ event: T42Appointment | T42Meeting, conversationIds: T42Id[], }>
```

**Parameters**

- **`event`** (`T42Appointment | T42Meeting`, required)
  The appointment or meeting to track.
- **`conversationId`** (`T42Id`, optional)
  Optional conversation identifier.

**Returns**: `Promise<{ event: T42Appointment | T42Meeting, conversationIds: T42Id[], }>`

### untrackCalendarEvent

Untracks appointment or meeting.

```ts
(event: T42Appointment | T42Meeting) => Promise<{ event: T42Appointment | T42Meeting }>
```

**Parameters**

- **`event`** (`T42Appointment | T42Meeting`, required)
  The appointment or meeting to untrack.

**Returns**: `Promise<{ event: T42Appointment | T42Meeting }>`

## Related types

- [Attachment](https://docs.interop.io/adapters/reference/javascript/outlook/attachment/index.md)
- [Email](https://docs.interop.io/adapters/reference/javascript/outlook/email/index.md)
- [EmailParams](https://docs.interop.io/adapters/reference/javascript/outlook/emailparams/index.md)
- [LocalEmailParams](https://docs.interop.io/adapters/reference/javascript/outlook/localemailparams/index.md)
- [NewEmailOptions](https://docs.interop.io/adapters/reference/javascript/outlook/newemailoptions/index.md)
- [NewTaskOptions](https://docs.interop.io/adapters/reference/javascript/outlook/newtaskoptions/index.md)
- [T42Appointment](https://docs.interop.io/adapters/reference/javascript/outlook/t42appointment/index.md)
- [T42Attachment](https://docs.interop.io/adapters/reference/javascript/outlook/t42attachment/index.md)
- [T42Email](https://docs.interop.io/adapters/reference/javascript/outlook/t42email/index.md)
- [T42Id](https://docs.interop.io/adapters/reference/javascript/outlook/t42id/index.md)
- [T42Meeting](https://docs.interop.io/adapters/reference/javascript/outlook/t42meeting/index.md)
- [T42Task](https://docs.interop.io/adapters/reference/javascript/outlook/t42task/index.md)
- [Task](https://docs.interop.io/adapters/reference/javascript/outlook/task/index.md)
- [TaskParams](https://docs.interop.io/adapters/reference/javascript/outlook/taskparams/index.md)
