# PA05-38 - MVNO Contract Line Change (MVNO契約変更依頼)

## Overview

Changes the contract line type (4G/5G) for the specified account.

- Processing takes approximately **30 minutes** per request (may vary with load)
- Once called, the request is **immediately locked** - subsequent requests for the same account are rejected until processing completes
- Requests **cannot be cancelled** once submitted; the only option is to wait for completion

---

## Request

### Method

`POST` (JSON format)

### URL

```
https://[host]/emptool/api/mvno/contractline/change/
```

### 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 account. For MVNO, specify the phone number                                              |
| 3   | productNumber | Product Number     | 1     | Alphanumeric           | 15  | 15  | △        | First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`, `DNxxxxxxxxxxxxx`) |
| 4   | contractLine  | Contract Line Type | 1     | Alphanumeric + symbols | 2   | 2   | ◎        | `"4G"`: Change to 4G line, `"5G"`: Change to 5G line                                            |

**Legend:** ◎ Required | △ Conditional

---

## Request Examples

### Basic (without product number)

```json
{
  "authKey": "XXXXXXXXXX",
  "account": "09012345678",
  "contractLine": "5G"
}
```

### With Product Number

```json
{
  "authKey": "XXXXXXXXXX",
  "account": "09012345678",
  "productNumber": "AX1234567890123",
  "contractLine": "4G"
}
```

---

## 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                                                  |
| ×      | 400         | 201         | Bad Request | Parameter error - account (account/to/tempAccount) issue |
| ×      | 400         | 228         | Bad Request | Parameter error - authentication key (authKey) issue     |
| ×      | 400         | 266         | Bad Request | Parameter error - product number issue                   |
| ×      | 400         | 360         | Bad Request | Parameter error - contract type issue                    |
| ×      | 403         | 205         | Auth Error  | Authentication key problem                               |
| ×      | 500         | 210         | NG          | Account not found error                                  |
| ×      | 500         | 361         | NG          | Account already has the target contract line type        |
| ×      | 500         | 362         | NG          | Account is currently processing a contract change        |
| ×      | 500         | 900         | NG          | Unexpected error occurred                                |

---

## Response Examples

### Success

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

### Error

```json
{
  "resultCode": "900",
  "status": {
    "message": "NG",
    "statusCode": "500"
  }
}
```
