# Overview

The Integration API allows you to save credentials securely on our infrastructure of the following type:

1. **Cloud Storage**: [Export your saved screenshot](https://docs.launchbrightly.com/product-screenshots-api/export-screenshots) to your own Cloud storage provider. We currently support Cloudflare R2 and Amazon S3.

2. **Help Center credentials**: [Import screenshots](https://docs.launchbrightly.com/help-center-sync-api/import-auth) from your help center. We currently support Zendesk, Intercom, Helpscout, Helpjuice, Freshdesk and KnowledgeOwl.

## Create a new integration

Depending on whether you want to create a cloud storage or help center integration, see the sections below:

1. [Storage integration](https://docs.launchbrightly.com/integration-api/cloud-storage-integrations)
2. [HelpCenter integration](https://docs.launchbrightly.com/integration-api/help-center-integrations)

## Update an existing integration

`PUT /integration`

### Request

```json
{
  "id": "55f5c789-1b87-4b82-91e5-3c3ad8b9393d",
  "label": "Dennis S3 Storage Credentials",
  "provider": "s3",
  "platform": "cloud",
  "credentials": {
    "bucket": "examplebucket",
    "accessKeyId": "xxx",
    "secretAccessKey": "yyy",
    "accountId": "zzz",
    "region": "auto"
  }
}
```

### Response

```json
{
  "id": "55f5c789-1b87-4b82-91e5-3c3ad8b9393d",
  "createdAt": "2024-02-26T16:24:18.676Z",
  "updatedAt": "2024-02-26T16:24:44.528Z",
  "message": "The Integration credentials have been successfully updated."
}
```

## Fetch a specific integration

`GET /integration/:id`

## Delete a specific integration

`DELETE /integration/:id`

## Verify an integration connection

`POST /integration/verify`

This endpoint allows you to verify the connection to the underlying cloud storage or helpcenter platforms. You can either specify:

1. an integrationId
2. or the credentials in plain text.

### 1. Using an `integrationId`

Request:

```json
{
  "integrationId": "5c2a93ed-e56a-448a-bcdf-464b2473f005"
}
```

Response:

```json
{
  "isConnectionSuccessful": true,
  "message": "The connection was successful"
}
```

### 2. Using storage credentials in plain text

Request:

```json
{
  "platform": "cloud",
  "provider": "r2",
  "credentials": {
    "bucket": "examplebucket",
    "accessKeyId": "xxx",
    "secretAccessKey": "yyy",
    "accountId": "zzz",
    "region": "auto"
  }
}
```

Response:

```json
{
  "isConnectionSuccessful": false,
  "message": "The specified bucket does not exist."
}
```

### 3. Using HelpCenter credentials in plain text

Request:

```json
{
   "provider": "zendesk",
   "platform": "helpcenter",
   "credentials": {
      "username": "hello@example.org",
      "token": "xxx",
      "subdomain": "https://example.zendesk.com"
   }
}
```

Response:

```json
{
   "isConnectionSuccessful": true,
   "message": "The helpcenter credentials has been successfully validated"
}
```

#### HTTP Status codes:

| HTTP Code | Description |
| --- | --- |
| 200 | On success |
| 422 | Any validation-related errors |
| 500 | Any unhandled exceptions |
