# Complete simulated 3DS challenge

**POST** `/simulate/issuing/threeds/{three_ds_attempt_id}/complete`

Complete the OTP challenge on a simulated 3DS attempt. The attempt must have an open challenge, created by simulating a
3DS authentication that resolves to `challenge`.

An `outcome` of `successful` authenticates the attempt, which you can then pass as `three_ds_attempt_id` when
simulating a card authorization. `failed` rejects the attempt. Both outcomes fire `issuing.3ds.authentication_completed`.

### Path Parameters

- `three_ds_attempt_id` `string` _(required)_ — Unique identifier for the three ds attempt.

### Body Parameters

- `outcome` `enum` _(required)_ — The outcome of the 3DS challenge. Must be one of `successful` or `failed`.
  Possible values: `successful`, `failed`

**Request**

```shell
curl 'https://api.column.com/simulate/issuing/threeds/<three_ds_attempt_id>/complete' \
  -XPOST \
  -u :<YOUR API KEY> \
  -H 'Content-Type: application/json' \
  -d '{
  "outcome": "successful"
}'
```

**Response 200**

```json
{
  "acs_transaction_id": "9a2c4e6b-3f1d-4b8a-a5e7-1c3d5f7b9e20",
  "amount": 12345,
  "attempt_count": 1,
  "attempt_status": "authenticated",
  "card_account_id": "cacc_2x8gszy5folpA9s0TOCseE9ABDM",
  "card_id": "card_2x8gszy5folpA9s0TOCseE9ABDM",
  "chosen_challenge": "otp",
  "created_at": "2024-01-15T09:30:00Z",
  "currency": "USD",
  "ds_transaction_id": "4f8b2c1e-9a3d-4e7b-8c6f-2d1a5b9e3c70",
  "id": "tdsa_2x8gszy5folpA9s0TOCseE9ABDM",
  "outcome_reason": "challenged_accepted",
  "three_ds_message_version": "2.3.1",
  "updated_at": "2024-01-15T09:30:00Z"
}
```
