# Creating Access Code CRUD Endpoints

## Overview

Access Codes CRUD endpoints Seam to list access codes created on an intercom.

### Listing Access Codes

After an Intercom Owner logs in and , Seam lists all the access codes that have been programmed and allows them to enable delivery on them. Your Intercom system should return a JSON list of intercoms.

## List all access codes for an intercom

<mark style="color:blue;">`GET`</mark> `https://devicecloud.example.com/access_codes?intercom_id=<INTERCOM_ID>`

#### Headers

| Name                                            | Type   | Description             |
| ----------------------------------------------- | ------ | ----------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer \<access\_token> |

{% tabs %}
{% tab title="200: OK List of Access Codes in JSON" %}

```javascript
{
    "access_codes": [
        {
            "access_code_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
            "intercom_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
            "owner_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
            "code": "1234",
            // Optional, but recommended
             "name": "Resident 001 Code"
        },
        {
            "access_code_id": "3043fde0-3c6d-4913-981f-2607f05fe743",
            "intercom_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
            "owner_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
            "code": "2345",
            // Optional, but recommended
             "name": "Resident 002 Code"
        },
    ]
}
```

{% endtab %}
{% endtabs %}

### Getting an Access Code

Seam may request intercom information to display information about the intercom to the connecting user.

## Get information about a single access code

<mark style="color:blue;">`GET`</mark> `https://devicecloud.example.com/access_codes/<ACCESS_CODE_ID>`

#### Query Parameters

| Name                                               | Type   | Description                |
| -------------------------------------------------- | ------ | -------------------------- |
| ACCESS\_CODE\_ID<mark style="color:red;">\*</mark> | String | Identifier for Access Code |

#### Headers

| Name                                            | Type   | Description             |
| ----------------------------------------------- | ------ | ----------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer \<access\_token> |

{% tabs %}
{% tab title="200: OK A single access code JSON object" %}

```javascript
{
  "access_code_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
  "intercom_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
  "owner_id": "3043fde0-3c6d-4913-981f-2607f05fe74e",
  "code": "1234",
  // Optional, but recommended
  "name": "Resident 001 Code"
}
```

{% endtab %}
{% endtabs %}

### Removing an Access Code

Seam unlocks doors to let in delivery people. If a door is disconnected or you're unable to unlock the door, return HTTP status code `500` with some details (see example below)

## Remove an access code

<mark style="color:red;">`DELETE`</mark> `https://devicecloud.example.com/access_codes/<ACCESS_CODE_ID>`

#### Headers

| Name                                            | Type   | Description             |
| ----------------------------------------------- | ------ | ----------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer \<access\_token> |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json        |

{% tabs %}
{% tab title="200: OK Access Code successfully removed." %}

```javascript
{
    "ok": true
}
```

{% endtab %}

{% tab title="500: Internal Server Error Something went wrong removing the access code." %}

```javascript
{
    "error_id": "ACCESS_CODE_REMOVAL_FAILED",
    "error_message": "Unexpected Server Error"
}
```

{% endtab %}
{% endtabs %}
