# PA04-04 - Spec/Quota Addition (スペック・クォータ追加)

## Overview

Adds account spec to the specified service account.

- "Spec" meaning varies by service type
- Available for **MVNO service** only
- Works for **regular SIM** and **share groups**
- NOT available for SIMs belonging to a share group

---

## Request

### Method

`POST` (JSON format)

### JSON Parameters

| No  | Parameter | Name               | Level | Type                              | Min | Max | Required | Description                                                                  |
| --- | --------- | ------------------ | ----- | --------------------------------- | --- | --- | -------- | ---------------------------------------------------------------------------- |
| 1   | authKey   | Authentication Key | 1     | Alphanumeric                      | -   | -   | ◎        | Obtained from OEM authentication                                             |
| 2   | kind      | Service Type       | 1     | Alphanumeric + symbols            | -   | -   | ○        | Target service. Only MVNO allowed                                            |
| 3   | account   | Account            | 1     | Alphanumeric + symbols            | -   | -   | ◎        | Target account. For MVNO: phone number (regular SIM) or share group code     |
| 4   | quota     | Quota              | 1     | Half-width numeric                | 1   | 6   | ◎        | Capacity to add in **MB** (1 - 512000 MB)                                    |
| 5   | quotaCode | Quota Code         | 1     | Half-width alphanumeric + symbols | 1   | 512 | △        | Optional identifier. Returned in PA05-02 quota history                       |
| 6   | expire    | Expiration Date    | 1     | Half-width numeric                | 8   | 8   | △        | Expiration date for quota (YYYYMMDD). Ignored if expiration not configurable |

**Legend:** ◎ Required | ○ Required within level | △ Optional

---

## Request Examples

### Add 100MB to Regular SIM

```json
{
  "authKey": "XXXXXXXXXX",
  "kind": "MVNO",
  "account": "09012345678",
  "quota": "100"
}
```

### Add 10000MB to Share Group (with code and expiration)

```json
{
  "authKey": "XXXXXXXXXX",
  "kind": "MVNO",
  "account": "QUMB_00000000001",
  "quota": "10000",
  "quotaCode": "campaign-100",
  "expire": "20131231"
}
```

---

## Response

### Format

JSON

### Parameters

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

---

## Response Codes

| Status | Status Code | Detail Code | Message     | Description                                 |
| ------ | ----------- | ----------- | ----------- | ------------------------------------------- |
| ○      | 200         | 100         | OK          | Success                                     |
| ×      | 400         | 200         | Bad Request | Parameter error - kind issue                |
| ×      | 400         | 201         | Bad Request | Parameter error - account issue             |
| ×      | 400         | 204         | Bad Request | Parameter error - other parameter issue     |
| ×      | 400         | 221         | Bad Request | Parameter error - quota issue               |
| ×      | 400         | 237         | Bad Request | Parameter error - quotaCode issue           |
| ×      | 403         | 205         | Auth Error  | Authentication key problem                  |
| ×      | 404         | 323         | Not Found   | Share group not found                       |
| ×      | 500         | 210         | NG          | Account not found                           |
| ×      | 500         | 211         | NG          | Account status does not allow request       |
| ×      | 500         | 230         | NG          | Account is waiting for async processing     |
| ×      | 500         | 233         | NG          | Specified service is not provided           |
| ×      | 500         | 234         | NG          | Addition to specified spec not allowed      |
| ×      | 500         | 322         | NG          | Share group status does not allow request   |
| ×      | 500         | 325         | NG          | Share group is waiting for async processing |
| ×      | 500         | 900         | NG          | Unexpected error occurred                   |

---

## Response Example

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

---

## Related APIs

- **PA05-02**: MVNO Quota Addition History - retrieves quota addition history including quotaCode
