# PA05-06 - MVNO Voice Option Change (MVNO音声オプション変更依頼)

## Overview

Changes the voice option features for the requested account/MVNO service.

- Voice option changes are **asynchronous** - cannot be cancelled while processing
- Unlike registration (PA05-05), this API does **not** accept identification data - only voice option changes
- Omitted options are treated as "no change" (not reset to defaults)
- The `talkOption` object is **required** and must not be empty

---

## Request

### Method

`POST` (JSON format)

### URL

```
https://[host]/emptool/api/mvno/talkoption/changeOrder/
```

### Authentication

Obtained via separate authentication API, included in request parameters.

### POST Parameters

| No  | Parameter | Name            | Required | Description       |
| --- | --------- | --------------- | -------- | ----------------- |
| 1   | json      | JSON Parameters | ◎        | Main request body |

### JSON Parameters

| No  | Parameter                       | Name                        | Level | Type                   | Min | Max | Required | Description                                                                                                                                                                                        |
| --- | ------------------------------- | --------------------------- | ----- | ---------------------- | --- | --- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | authKey                         | Authentication Key          | 1     | Alphanumeric           | -   | -   | ◎        | Obtained from OEM authentication                                                                                                                                                                   |
| 2   | account                         | Account                     | 1     | Alphanumeric + symbols | -   | -   | ◎        | Target SIM phone number                                                                                                                                                                            |
| 3   | userConfirmed                   | User Confirmed Flag         | 1     | Half-width numeric     | 2   | 2   | ◎        | `"10"`: Enabled, `"20"`: Disabled. Returns error if not enabled                                                                                                                                    |
| 4   | aladinOperated                  | ALADIN Operated Flag        | 1     | Half-width numeric     | 2   | 2   | -        | `"10"`: Operated, `"20"`: Not operated. Defaults to `"20"` if omitted                                                                                                                              |
| 5   | talkOption                      | Voice Options               | 1     | Object                 | -   | -   | ◎        | Voice option settings. **Must not be empty** - empty `{}` returns error                                                                                                                            |
| 6   | talkOption.voiceMail            | Voicemail                   | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Enabled, `"20"`: Disabled. Omitted = no change                                                                                                                                             |
| 7   | talkOption.callWaiting          | Call Waiting                | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Enabled, `"20"`: Disabled. Omitted = no change                                                                                                                                             |
| 8   | talkOption.callTransfer         | Call Transfer               | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Enabled, `"20"`: Disabled. Omitted = no change                                                                                                                                             |
| 9   | talkOption.callTransferToWorld  | International Call Transfer | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Enabled, `"20"`: Disabled. Omitted = no change                                                                                                                                             |
| 10  | talkOption.worldCall            | WORLD CALL                  | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Amount specified, `"11"`: Unlimited, `"20"`: Disabled. Omitted = no change                                                                                                                 |
| 11  | talkOption.worldCallCreditLimit | WORLD CALL Credit Limit     | 2     | Half-width numeric     | 4   | 7   | △        | Credit limit in JPY. Only applies when worldCall is `"10"`. Defaults to `5000`. Ignored when worldCall is `"11"` or `"20"`. See [WORLD CALL Allowed Amounts](#world-call-allowed-amounts)          |
| 12  | talkOption.worldWing            | WORLD WING                  | 2     | Half-width numeric     | 2   | 2   | △        | `"10"`: Amount specified, `"11"`: Unlimited, `"20"`: Disabled. Omitted = no change                                                                                                                 |
| 13  | talkOption.worldWingCreditLimit | WORLD WING Suspension Limit | 2     | Half-width numeric     | 5   | 7   | △        | Suspension threshold in JPY. Only applies when worldWing is `"10"`. Defaults to `50000`. Ignored when worldWing is `"11"` or `"20"`. See [WORLD WING Allowed Amounts](#world-wing-allowed-amounts) |

**Legend:** ◎ Required | △ Conditional

---

## WORLD CALL Allowed Amounts

Only the following values (in JPY) are accepted. Any other value returns an error.

|        |        |         |           |
| ------ | ------ | ------- | --------- |
| 5,000  | 50,000 | 100,000 | 400,000   |
| 10,000 | 60,000 | 150,000 | 500,000   |
| 20,000 | 70,000 | 200,000 | 600,000   |
| 30,000 | 80,000 | 250,000 | 800,000   |
| 40,000 | 90,000 | 300,000 | 1,000,000 |

---

## WORLD WING Allowed Amounts

Only the following values (in JPY) are accepted. Any other value returns an error.

|         |         |           |
| ------- | ------- | --------- |
| 50,000  | 500,000 | 1,000,000 |
| 100,000 | 600,000 |           |
| 200,000 | 700,000 |           |
| 300,000 | 800,000 |           |
| 400,000 | 900,000 |           |

---

## Request Example

```json
{
  "authKey": "XXXXXXXXXX",
  "account": "09012345678",
  "userConfirmed": "10",
  "aladinOperated": "10",
  "talkOption": {
    "voiceMail": "10",
    "callWaiting": "10",
    "callTransfer": "10",
    "callTransferToWorld": "20",
    "worldCall": "10",
    "worldCallCreditLimit": "10000",
    "worldWing": "10",
    "worldWingCreditLimit": "20000"
  }
}
```

---

## Response

### Format

JSON

### Parameters

| No  | Parameter         | Name               | Level | Type                   | Description               |
| --- | ----------------- | ------------------ | ----- | ---------------------- | ------------------------- |
| 1   | resultCode        | Result Code        | 1     | Numeric                | Processing result code    |
| 2   | status            | Status             | 1     | Object                 | Status details            |
| 3   | status.message    | Message            | 2     | Alphanumeric + symbols | Processing result message |
| 4   | status.statusCode | Detail Result Code | 2     | Numeric                | Detailed status code      |

---

## Response Codes

| Status | Status Code | Detail Code | Message     | Description                                                                          |
| ------ | ----------- | ----------- | ----------- | ------------------------------------------------------------------------------------ |
| ○      | 200         | 100         | OK          | Success                                                                              |
| ○      | 200         | 101         | OK          | Request already satisfied (options already in desired state)                         |
| ×      | 400         | 201         | Bad Request | Parameter error - account (account/to/tempAccount) issue                             |
| ×      | 400         | 204         | Bad Request | Parameter error - other parameter issue                                              |
| ×      | 400         | 228         | Bad Request | Parameter error - authentication key (authKey) issue                                 |
| ×      | 400         | 242         | Bad Request | Parameter error - user confirmed flag issue                                          |
| ×      | 400         | 243         | Bad Request | Parameter error - voice options (object) issue                                       |
| ×      | 400         | 244         | Bad Request | Parameter error - voicemail option issue                                             |
| ×      | 400         | 245         | Bad Request | Parameter error - call waiting option issue                                          |
| ×      | 400         | 246         | Bad Request | Parameter error - call transfer option issue                                         |
| ×      | 400         | 247         | Bad Request | Parameter error - international call transfer option issue                           |
| ×      | 400         | 248         | Bad Request | Parameter error - WORLD CALL option issue                                            |
| ×      | 400         | 249         | Bad Request | Parameter error - WORLD CALL credit limit issue                                      |
| ×      | 400         | 250         | Bad Request | Parameter error - WORLD WING option issue                                            |
| ×      | 400         | 251         | Bad Request | Parameter error - WORLD WING suspension limit issue                                  |
| ×      | 400         | 278         | Bad Request | Parameter error - ALADIN operated flag issue                                         |
| ×      | 403         | 205         | Auth Error  | Authentication key problem                                                           |
| ×      | 404         | 263         | Not Found   | Specified voice option does not exist                                                |
| ×      | 500         | 210         | NG          | Account not found error                                                              |
| ×      | 500         | 211         | NG          | Account status does not allow request execution                                      |
| ×      | 500         | 230         | NG          | Account is waiting for async processing; request not allowed                         |
| ×      | 500         | 241         | NG          | User confirmed flag is not enabled for voice option registration/change/cancellation |
| ×      | 500         | 260         | NG          | MVNO account voice usage state is `20` (not in use); voice option change not allowed |
| ×      | 500         | 900         | NG          | Unexpected error occurred                                                            |

---

## Response Example

```json
{
  "resultCode": 100,
  "status": {
    "message": "OK",
    "statusCode": 200
  }
}
```
