## Authentication

- Include your `Access-Token` in the header of your requests.
- Include your `x-api-key`. The API key provided by GenLogs. This header must be included in the request.

## Permissions

The `external-api-delete-onboarded-carrier-contact` permission is required to access this endpoint.

## Endpoint

- **URL:** `https://api.genlogs.io/onboarded-carrier/bulk/contacts`
- **Method:** `DELETE`

## Headers

- **Access-Token**: (string, required): Access token obtained from the "Create Access Token" endpoint.
- **X-Api-Key** (string, required): The API key provided by GenLogs.

## Request body

- **contact_ids** (list, UUID format str, required): Existent contact ID list to be deleted.

## Request Example:

```bash
curl --location --request DELETE 'https://api.genlogs.io/onboarded-carrier/bulk/contacts' \
--header 'access-token: <your-api-access-token>' \
--header 'x-api-key: <your-x-api-key>' \
--header 'Content-Type: application/json' \
--data '{
    "contact_ids": [\
        "11111111-2222-3333-4444-555555555555",\
        "11111111-2222-3333-4444-555555555556",\
        "11111111-2222-3333-4444-555555555557"\
    ]
}'
```

## Response:

- **200 OK:** A JSON object containing a list of deleted carrier contact(s).
- **400 Bad Request:** If required parameters are missing or invalid.
- **401 Unauthorized:** If the authentication credentials (Access-Token) is missing or incorrect.
- **403 Forbidden**: If the permission has not been added to your user.
- **404 Not Found**: If one or more of the provided `contact_ids` doesn't exist or are not created.
- **500 Internal Server Error:** If there is an issue on the server that prevents processing the request.

## Response Body:

### 200 OK – Contacts Deleted Successfully

```json
{
    "contacts": [\
        {"id": "11111111-2222-3333-4444-555555555555", "deleted": true},\
        {"id": "11111111-2222-3333-4444-555555555556", "deleted": true},\
        {"id": "11111111-2222-3333-4444-555555555557", "deleted": true}\
    ]
}
```

### 400 Bad Request

Returned when:
- The provided contact ID list is malformed or missing.

```json
{
    "detail": "Missing required field: contact_ids"
}
```

```json
{
    "detail": "Value error, contact_ids must not be empty"
}
```

### 401 Unauthorized

- When access-token is missing or expired.

```json
{
    "detail": "Token is missing!"
}
```

```json
{
    "detail": "Token is expired!"
}
```

### 403 Forbidden

```json
{
    "detail": "User not allowed to access this endpoint"
}
```

### 404 Not Found

```json
{
    "detail": "One or more contacts were not found or do not belong to the customer."
}
```

## Bulk delete onboarded carrier contacts

Deletes multiple onboarded carrier contacts for the authenticated customer in a single request. All provided contact IDs must exist and belong to the authenticated customer. The operation follows the same authorization, repository, caching, and deletion logic as the single-contact delete flow.

### Authorizations

AccessTokenAuth & ApiKeyAuth

### Body

application/json

- **contact_ids (string, required)**: List of contact UUIDs to delete. Example: `[
"bd849e72-09f0-4d19-8b20-e227cd4ef455",
"7e2c8f6a-0f31-4e6a-bf1c-9c4d4c1e8f22"
]`

### Responses

- **200**: Contacts deleted successfully.
  
  ```json
{
    "contacts": [\
        {"id": "bd849e72-09f0-4d19-8b20-e227cd4ef455", "deleted": true}\
    ]
}
```  
- **400**: Bad Request – Invalid request body.
- **401**: Unauthorized – Invalid or missing Access-Token.
- **403**: Forbidden – Missing required permission.
- **404**: One or more contacts not found or not owned by the customer.
- **500**: Internal Server Error.
