docs: add Freebit API specification docs (PA05-05/06/18/19/20/33/38/41)

Translated Freebit API specs for voice options, semi-black registration,
state changes, OTA activation, contract changes, and eSIM activation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Temuulen Ankhbayar 2026-02-17 18:06:10 +09:00
parent 891d3aa099
commit be09c78491
8 changed files with 1621 additions and 0 deletions

View File

@ -0,0 +1,281 @@
# PA05-05 - MVNO Voice Option Registration (MVNO音声オプション登録)
## Overview
Registers voice option features and identity verification information (identification data) for the requested account/MVNO service.
- Voice option registration is **asynchronous** - cannot be cancelled while processing
- Registers both voice call features (voicemail, call waiting, etc.) and subscriber identity information
---
## Request
### Method
`POST` (JSON format)
### URL
```
https://[host]/emptool/api/mvno/talkoption/addOrder/
```
### 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. If not specified, pass empty `{}` or omit entirely |
| 6 | talkOption.voiceMail | Voicemail | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Enabled, `"20"`: Disabled. Defaults to `"20"` |
| 7 | talkOption.callWaiting | Call Waiting | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Enabled, `"20"`: Disabled. Defaults to `"20"` |
| 8 | talkOption.callTransfer | Call Transfer | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Enabled, `"20"`: Disabled. Defaults to `"20"` |
| 9 | talkOption.callTransferToWorld | International Call Transfer | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Enabled, `"20"`: Disabled. Defaults to `"20"` |
| 10 | talkOption.worldCall | WORLD CALL | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Amount specified, `"11"`: Unlimited, `"20"`: Disabled. Defaults to `"20"` |
| 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. Defaults to `"20"` |
| 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) |
| 14 | identificationData | Identification Data | 1 | Object | - | - | ◎ | Key information to determine voice option usage count. Empty `{}` returns error |
| 15 | identificationData.lastnameKanji | Last Name (Kanji) | 2 | Full-width characters | 1 | 255 | △ | URL-encoded full-width characters. Registered as blank if omitted. See [Character Rules](#character-rules) |
| 16 | identificationData.firstnameKanji | First Name (Kanji) | 2 | Full-width characters | 1 | 255 | △ | URL-encoded full-width characters. Registered as blank if omitted. See [Character Rules](#character-rules) |
| 17 | identificationData.lastnameZenKana | Last Name (Katakana) | 2 | Full-width katakana | 1 | 255 | ◎ | URL-encoded full-width characters. See [Character Rules](#character-rules) |
| 18 | identificationData.firstnameZenKana | First Name (Katakana) | 2 | Full-width katakana | 1 | 255 | △ | URL-encoded full-width characters. Not required when gender is `"C"` (corporate). Required otherwise. See [Character Rules](#character-rules) |
| 19 | identificationData.gender | Gender | 2 | Half-width alpha | 1 | 1 | ◎ | `"M"`: Male, `"W"`: Female, `"C"`: Corporate. Invalid values return error |
| 20 | identificationData.birthday | Date of Birth | 2 | Alphanumeric + symbols | 1 | 10 | △ | `"YYYYMMDD"` or `"YYYY/MM/DD"` format. Not required when gender is `"C"` (corporate); value is ignored even if provided |
**Legend:** ◎ Required | △ Conditional
---
## Character Rules
### Kanji Fields
- Nearly all characters in the Unicode table are allowed
- **Excluded**: Special characters and platform-dependent characters (機種依存文字)
### Katakana Fields
Allowed characters:
- Full-width katakana
- Full-width Roman letters (uppercase and lowercase)
- Full-width Arabic numerals
- The following symbols:
- `` (ampersand)
- `'` (apostrophe)
- `` (comma)
- `` (hyphen)
- `` (period)
- `・` (middle dot)
- ` ` (full-width space)
---
## 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 Examples
### No Voice Options (empty object)
```json
{
"authKey": "XXXXXXXXXX",
"account": "09012345678",
"userConfirmed": "10",
"aladinOperated": "10",
"talkOption": {},
"identificationData": {
"lastnameKanji": "山田",
"firstnameKanji": "太郎",
"lastnameZenKana": "ヤマダ",
"firstnameZenKana": "タロウ",
"gender": "M",
"birthday": "19900101"
}
}
```
### No Voice Options (omitted entirely)
```json
{
"authKey": "XXXXXXXXXX",
"account": "09012345678",
"userConfirmed": "10",
"aladinOperated": "10",
"identificationData": {
"lastnameKanji": "山田",
"firstnameKanji": "太郎",
"lastnameZenKana": "ヤマダ",
"firstnameZenKana": "タロウ",
"gender": "M",
"birthday": "19900101"
}
}
```
### With Voice Options (individual)
```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": ""
},
"identificationData": {
"lastnameKanji": "山田",
"firstnameKanji": "太郎",
"lastnameZenKana": "ヤマダ",
"firstnameZenKana": "タロウ",
"gender": "M",
"birthday": "19900101"
}
}
```
### With Voice Options (corporate)
```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": ""
},
"identificationData": {
"lastnameZenKana": "フリービット",
"firstnameZenKana": "",
"gender": "C"
}
}
```
---
## 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 | 252 | Bad Request | Parameter error - identification data (object) issue |
| × | 400 | 253 | Bad Request | Parameter error - last name (kanji) issue |
| × | 400 | 254 | Bad Request | Parameter error - first name (kanji) issue |
| × | 400 | 255 | Bad Request | Parameter error - last name (katakana) issue |
| × | 400 | 256 | Bad Request | Parameter error - first name (katakana) issue |
| × | 400 | 257 | Bad Request | Parameter error - gender issue |
| × | 400 | 258 | Bad Request | Parameter error - date of birth 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 addition not allowed |
| × | 500 | 261 | NG | Maximum voice SIM registrations per OEM exceeded (6 or more); voice option addition not allowed |
| × | 500 | 262 | NG | Voice option already registered. Use the change request API instead |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```

View File

@ -0,0 +1,167 @@
# 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
}
}
```

View File

@ -0,0 +1,141 @@
# PA05-18 - MVNO Semi-Black Account Temporary Registration (MVNO半黒アカウント仮登録)
## Overview
Queues a semi-black SIM account for later activation, based on an OEM request. Registers account information into related systems.
- Settings are **NOT** applied immediately — they are saved to a **queue**
- To activate a SIM queued by this API, use **PA05-19** (MVNO Semi-Black Account Registration)
- Supports two MNP methods: semi-black SIM (`"10"`) and OTA (`"20"`)
- To overwrite existing MNP info (e.g., expired reservation), the entry must first be cancelled via **PA05-20** (MVNO Semi-Black Account Status Change) to status `"60"` (cancelled)
---
## Request
### Method
`POST` (JSON format)
### URL
```
https://[host]/emptool/api/mvno/semiblack/addTempAcnt/
```
### 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 | Half-width numeric | 11 | 14 | △ | Target SIM phone number. Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 3 | tempAccount | Temporary Account | 1 | Half-width numeric | 11 | 14 | △ | Target SIM temporary phone number (parent number). Required when mnp.method is `"20"` (OTA). Not required otherwise |
| 4 | productNumber | Product Number | 1 | Alphanumeric | 15 | 15 | ◎ | Product number printed on the back of the SIM. First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`, `DNxxxxxxxxxxxxx`) |
| 5 | repAccount | Representative Number | 1 | Half-width numeric | 11 | 14 | △ | Parent phone number for the target SIM |
| 6 | simKind | SIM Type | 1 | Alphanumeric | 2 | 2 | ◎ | SIM type. Format: `[size][capability]`. Size — `S`: Standard, `M`: Micro, `N`: Nano. Capability — `0`: Voice, `2`: No SMS, `3`: SMS. Examples: `S0`, `M2`, `N3` |
| 7 | expireDate | SIM Expiry Date | 1 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. Semi-black SIM card expiry. If specified: used as-is. If omitted: OTA (`"20"`) = no expiry; otherwise = system date + 15 days (inclusive) |
| 8 | mnp | MNP Info | 1 | Object | - | - | - | MNP information |
| 9 | mnp.method | MNP Method | 2 | Half-width numeric | 2 | 2 | ◎ | `"10"`: Semi-black SIM, `"20"`: OTA |
| 10 | mnp.reserveNumber | MNP Reservation Number | 2 | Half-width numeric | 10 | 10 | △ | MNP reservation number (no hyphens). Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 11 | mnp.reserveExpireDate | MNP Reservation Expiry | 2 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. MNP reservation expiry date. Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 12 | mnp.overWrite | Overwrite Flag | 2 | Half-width numeric | 2 | 2 | △ | `"10"`: Enabled, `"20"`: Disabled. Defaults to `"20"` if omitted. Used when MNP reservation expires before arrival. **Requires prior cancellation via PA05-20 (status `"60"`)** |
**Legend:** ◎ Required | △ Conditional
---
## Request Example
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"account": "08011112222",
"tempAccount": "08022223333",
"productNumber": "ZZ0009999999999",
"repAccount": "08000001111",
"simKind": "N0",
"expireDate": "20150901",
"mnp": {
"method": "10",
"reserveNumber": "1101201234",
"reserveExpireDate": "20150915"
}
}
```
---
## 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/tempAccount) issue |
| × | 400 | 266 | Bad Request | Parameter error - product number issue |
| × | 400 | 269 | Bad Request | Parameter error - representative number issue |
| × | 400 | 277 | Bad Request | Parameter error - SIM type issue |
| × | 400 | 309 | Bad Request | Parameter error - SIM expiry date issue |
| × | 400 | 306 | Bad Request | Parameter error - MNP method issue |
| × | 400 | 307 | Bad Request | Parameter error - MNP reservation number issue |
| × | 400 | 308 | Bad Request | Parameter error - MNP reservation expiry date issue |
| × | 400 | 314 | Bad Request | Parameter error - overwrite flag issue |
| × | 403 | 205 | Auth Error | Authentication key problem |
| × | 500 | 208 | NG | Account (account/tempAccount) duplicate error |
| × | 500 | 275 | NG | No available phone number inventory for the specified representative number |
| × | 500 | 284 | NG | Representative number is locked |
| × | 500 | 287 | NG | Representative number does not exist or is unavailable |
| × | 500 | 288 | NG | Product number does not exist, is already in use, or has not been received into inventory |
| × | 500 | 289 | NG | SIM type does not match representative number's type |
| × | 500 | 310 | NG | MNP reservation number has duplication or other issues |
| × | 500 | 313 | NG | MNP reservation number expiry falls within the grace period; request cannot be accepted |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```
---
## Related APIs
| API | Name | Relationship |
| ------- | ------------------------------------- | ---------------------------------------------------- |
| PA05-19 | MVNO Semi-Black Account Registration | Activates SIMs queued by this API |
| PA05-20 | MVNO Semi-Black Account Status Change | Must cancel (status `"60"`) before overwrite is used |

View File

@ -0,0 +1,142 @@
# PA05-19 - MVNO Semi-Black Account Registration (MVNO半黒アカウント本登録)
## Overview
Performs full registration of a pre-provisioned semi-black SIM into related systems, based on an OEM request.
- Settings are applied **immediately** (synchronous, unlike most other activation APIs)
- The SIM must have been previously pre-registered (仮登録) before calling this API
- Supports two MNP methods: semi-black SIM (`"10"`) and OTA (`"20"`)
---
## Request
### Method
`POST` (JSON format)
### URL
```
https://[host]/emptool/api/mvno/semiblack/addAcnt/
```
### 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 | aladinOperated | ALADIN Operated Flag | 1 | Half-width numeric | 2 | 2 | - | `"10"`: Operated, `"20"`: Not operated. Defaults to `"20"` if omitted |
| 3 | masterAccount | Master Account | 1 | Alphanumeric + symbols | 1 | 64 | △ | IIC master account. Not required if: not using User Management Service, or no planCode specified |
| 4 | masterPassword | Master Password | 1 | Alphanumeric + symbols | 1 | 256 | △ | IIC master password. Required when createType is `"new"`. Not required if: not using User Management Service, or no planCode specified |
| 5 | createType | Registration Type | 1 | Alphanumeric | - | - | ◎ | `"new"`: Create new master account, `"add"`: Add to existing. `"add"` not allowed without User Management Service |
| 6 | account | Account | 1 | Half-width numeric | 11 | 14 | ◎ | Target SIM phone number. Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 7 | tempAccount | Temporary Account | 1 | Half-width numeric | 11 | 14 | △ | Target SIM temporary phone number. Required when mnp.method is `"20"` (OTA). Not required otherwise |
| 8 | productNumber | Product Number | 1 | Alphanumeric | 15 | 15 | ◎ | Product number printed on the back of the SIM. First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`) |
| 9 | mnp | MNP Info | 1 | Object | - | - | - | MNP information |
| 10 | mnp.method | MNP Method | 2 | Half-width numeric | 2 | 2 | ◎ | `"10"`: Semi-black SIM, `"20"`: OTA |
| 11 | shipDate | Ship Date | 1 | Half-width numeric | 8 | 8 | ◎ | YYYYMMDD format. Past dates OK, future dates NG |
| 12 | globalIp | Global IP (yes/no) | 1 | Half-width numeric | 2 | 2 | - | `"20"`: Disabled. If not specified, not processed. Note: `"10"` (enabled) has been **deprecated**. Requires contract with freebit |
| 13 | planCode | Plan Code | 1 | Alphanumeric | 1 | 32 | ◎ | Plan to apply |
| 14 | deliveryCode | Delivery Code | 1 | Alphanumeric | 1 | 10 | - | Arbitrary code set by each OEM |
**Legend:** ◎ Required | △ Conditional
---
## Request Example
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"aladinOperated": "10",
"masterAccount": "testAccount@test.ne.jp",
"masterPassword": "testPass",
"createType": "new",
"account": "08011112222",
"tempAccount": "08022223333",
"productNumber": "ZZ0009999999999",
"mnp": {
"method": "10"
},
"shipDate": "20150915",
"globalIp": "20",
"planCode": "100K_PLAN",
"deliveryCode": "XXX001"
}
```
---
## 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 | 202 | Bad Request | Parameter error - master password issue |
| × | 400 | 204 | Bad Request | Parameter error - other parameter issue |
| × | 400 | 215 | Bad Request | Parameter error - plan code (planCode) issue |
| × | 400 | 228 | Bad Request | Parameter error - authentication key (authKey) issue |
| × | 400 | 231 | Bad Request | Parameter error - global IP (globalIp) issue |
| × | 400 | 266 | Bad Request | Parameter error - product number issue |
| × | 400 | 269 | Bad Request | Parameter error - representative number issue |
| × | 400 | 274 | Bad Request | Parameter error - delivery code issue |
| × | 400 | 276 | Bad Request | Parameter error - ship date issue |
| × | 400 | 279 | Bad Request | Parameter error - registration type issue |
| × | 400 | 306 | Bad Request | Parameter error - MNP method issue |
| × | 403 | 205 | Auth Error | Authentication key problem |
| × | 404 | 232 | Not Found | Specified plan does not exist |
| × | 500 | 208 | NG | Account (masterAccount/account) duplicate error |
| × | 500 | 210 | NG | Account (masterAccount) 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 | 275 | NG | No available phone number inventory for the specified representative number |
| × | 500 | 284 | NG | Representative number is locked |
| × | 500 | 287 | NG | Representative number does not exist or is unavailable |
| × | 500 | 288 | NG | Product number does not exist, is already in use, or has not been received into inventory |
| × | 500 | 289 | NG | SIM type does not match representative number's type |
| × | 500 | 313 | NG | MNP reservation number expiry falls within the grace period; request cannot be accepted |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```

View File

@ -0,0 +1,137 @@
# PA05-20 - MVNO Semi-Black Account Status Change (MVNO半黒アカウント状態変更)
## Overview
Updates the status of a semi-black SIM identified by its product number, in freebit's managed systems.
- Used to manage the lifecycle of semi-black SIMs (cancel, mark as lost, returned, etc.)
- For white SIM inventory processing, use **PA05-15** (MVNO White SIM Status Change) instead
- Setting status to `"60"` (cancelled) is a prerequisite for using the overwrite flag in **PA05-18**
---
## Request
### Method
`POST` (JSON format)
### URL
```
https://[host]/emptool/api/mvno/semiblack/changeState/
```
### 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 | productNumber | Product Number | 1 | Alphanumeric | 15 | 15 | ◎ | Product number printed on the back of the SIM. First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`, `DNxxxxxxxxxxxxx`) |
| 3 | account | Account | 1 | Half-width numeric | 11 | 14 | ◎ | Target SIM phone number. Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 4 | mnp | MNP Info | 1 | Object | - | - | - | MNP information |
| 5 | mnp.method | MNP Method | 2 | Half-width numeric | 2 | 2 | ◎ | `"10"`: Semi-black SIM, `"20"`: OTA |
| 6 | mnp.reserveNumber | MNP Reservation Number | 2 | Half-width numeric | 10 | 10 | △ | MNP reservation number (no hyphens). Can be omitted when mnp.method is `"20"` (OTA). Required otherwise |
| 7 | state | State | 1 | Half-width numeric | 1 | 2 | ◎ | Target SIM usage state (see State Values below) |
**Legend:** ◎ Required | △ Conditional
### State Values
| Code | Name | Description |
| ---- | ----------------------- | -------------------------------------------------------------------------------- |
| 5 | OEM Received | SIM received into OEM inventory |
| 10 | Semi-black (= Temp Reg) | Temporary registration state |
| 20 | Burn Failure / Reissue | SIM burn failed, needs reissue |
| 30 | Lost / Reissue | SIM lost, needs reissue |
| 40 | Used | SIM has been used/consumed |
| 50 | Damaged | SIM is physically damaged |
| 60 | Cancelled | Cancelled (e.g., MNP reservation invalid). **Required before PA05-18 overwrite** |
| 70 | OEM Collected | SIM collected/recovered by OEM |
| 71 | OEM Uncollectable | SIM cannot be collected by OEM |
| 80 | Returned to FB | SIM returned to freebit |
---
## Request Example
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"productNumber": "ZZ0009999999999",
"account": "08011112222",
"mnp": {
"method": "10",
"reserveNumber": "1101201234"
},
"state": "10"
}
```
---
## 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/tempAccount) issue |
| × | 400 | 266 | Bad Request | Parameter error - product number issue |
| × | 400 | 306 | Bad Request | Parameter error - MNP method issue |
| × | 400 | 307 | Bad Request | Parameter error - MNP reservation number issue |
| × | 400 | 280 | Bad Request | Parameter error - state value issue |
| × | 403 | 205 | Auth Error | Authentication key problem |
| × | 404 | 281 | Not Found | Specified product number does not exist |
| × | 500 | 282 | NG | State transition not allowed (invalid state change) |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```
---
## Related APIs
| API | Name | Relationship |
| ------- | ---------------------------------------------- | ------------------------------------------------------------- |
| PA05-15 | MVNO White SIM Status Change | Similar API for white SIMs (inventory processing) |
| PA05-18 | MVNO Semi-Black Account Temporary Registration | Queues SIMs; overwrite flag requires this API to cancel first |
| PA05-19 | MVNO Semi-Black Account Registration | Activates SIMs after temp registration |

View File

@ -0,0 +1,327 @@
# PA05-33 - OTA Account Activation (OTAアカウント開通)
## Overview
Activates a pre-created OTA-SIM based on an OEM request. Supports new activations, MNP transfers, and reissues.
- Activation is **asynchronous** — not immediate. Completion is notified via file output:
- **Activation Ready Notification File** — output when activation preparation is complete
- **Activation Complete Notification File** — output when activation is fully complete
- File specifications: see CSV File Format Definition (MVNO Edition)
- When `aladinOperated` is `"10"` (operated) **and** `addKind` is `"R"` (reissue), the API returns `400-356` (unsupported pattern). Reissue with ALADIN operated is handled via file integration instead.
---
## Request
### Method
`POST` (JSON format, URL-encoded)
### URL
```
https://[host]/emptool/api/mvno/ota/addAcnt/
```
### 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 | aladinOperated | ALADIN Operated Flag | 1 | Half-width numeric | 2 | 2 | - | `"10"`: Operated, `"20"`: Not operated. Defaults to `"20"` if omitted |
| 3 | masterAccount | Master Account | 1 | Alphanumeric + symbols | 1 | 64 | △ | IIC master account. Not required if: not using User Management Service, no planCode specified, or addKind is `"R"` (reissue) |
| 4 | masterPassword | Master Password | 1 | Alphanumeric + symbols | 1 | 256 | △ | IIC master password. Required when createType is `"new"`. Not required if: not using User Management Service, no planCode, or addKind `"R"` |
| 5 | createType | Registration Type | 1 | Half-width alpha | 3 | 3 | △ | `"new"`: Create new master account, `"add"`: Add to existing. `"add"` not allowed without User Management Service. Not required for `"R"` |
| 6 | account | Account | 1 | Half-width numeric | 11 | 14 | ◎ | Target SIM phone number. If activating with same number as tempAccount, specify the tempAccount value |
| 7 | tempAccount | Temporary Account | 1 | Half-width numeric | 11 | 14 | ◎ | OTA-SIM temporary phone number |
| 8 | productNumber | Product Number | 1 | Alphanumeric | 15 | 15 | ◎ | Product number on back of OTA-SIM. First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`) |
| 9 | repAccount | Representative Number | 1 | Half-width numeric | 11 | 14 | △ | Parent phone number. Required unless addKind is `"R"` (reissue) |
| 10 | size | SIM Size | 1 | Half-width alpha | 4 | 8 | ◎ | `"standard"`, `"nano"`, or `"micro"` |
| 11 | addKind | Activation Type | 1 | Half-width alpha | 1 | 1 | ◎ | `"N"`: New, `"M"`: MNP transfer, `"R"`: Reissue |
| 12 | reissue | Reissue Info | 1 | Object | - | - | △ | Required when addKind is `"R"`. Not required otherwise |
| 13 | reissue.oldSize | Original SIM Size | 2 | Half-width alpha | 4 | 8 | ○ | SIM size before reissue: `"standard"`, `"nano"`, or `"micro"` |
| 14 | reissue.oldProductNumber | Original Product Number | 2 | Alphanumeric | 15 | 15 | ○ | Product number of the SIM before reissue |
| 15 | mnp | MNP Info | 1 | Object | - | - | △ | Required when aladinOperated is `"20"` and addKind is `"M"`. Not required otherwise |
| 16 | mnp.reserveNumber | MNP Reservation Number | 2 | Half-width numeric | 10 | 10 | ○ | MNP reservation number (no hyphens) |
| 17 | mnp.reserveExpireDate | MNP Reservation Expiry | 2 | Half-width numeric | 8 | 8 | ○ | YYYYMMDD format. Future dates only |
| 18 | mnp.lastnameKanji | Last Name (Kanji) | 2 | Full-width characters | 1 | 50 | ○ | UTF-8 range. For non-corporate: lastname + full-width space + firstname ≤ 50 chars. For corporate (gender `"C"`): lastname ≤ 50 chars |
| 19 | mnp.firstnameKanji | First Name (Kanji) | 2 | Full-width characters | \* | \* | △ | Required when gender is not `"C"` (corporate). See lastname for length rules |
| 20 | mnp.lastnameZenKana | Last Name (Full Katakana) | 2 | Full-width katakana | 1 | 50 | ○ | UTF-8 range. For non-corporate: lastname + full-width space + firstname ≤ 50 chars. For corporate (gender `"C"`): lastname ≤ 50 chars |
| 21 | mnp.firstnameZenKana | First Name (Full Katakana) | 2 | Full-width katakana | \* | \* | △ | Required when gender is not `"C"` (corporate). See lastname for length rules |
| 22 | mnp.gender | Gender | 2 | Half-width alpha | 1 | 1 | ○ | `"M"`: Male, `"W"`: Female, `"C"`: Corporate |
| 23 | mnp.birthday | Date of Birth | 2 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. Required when gender is not `"C"` (corporate) |
| 24 | shipDate | Ship Date | 1 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. Past dates OK, future dates NG. Required when aladinOperated is `"10"`. When `"10"` + addKind `"R"`, treated as reissue completion date |
| 25 | planCode | Plan Code | 1 | Alphanumeric + symbols | 1 | 32 | - | Plan to apply. No plan = no connectivity. Not required for addKind `"R"` |
| 26 | globalIp | Global IP (yes/no) | 1 | Half-width numeric | 2 | 2 | - | `"20"`: Disabled. If not specified, not processed. `"10"` (enabled) is **deprecated**. Not required for addKind `"R"` |
| 27 | deliveryCode | Delivery Code | 1 | Alphanumeric | 1 | 10 | - | Arbitrary code set by each OEM |
**Legend:** ◎ Required | ○ Required within level | △ Conditional
---
## Character Rules
### Kanji Fields
Allowed characters:
- Must be within UTF-8 range **and** convertible to Windows-31J encoding
- **Excluded**: half-width space (0x0020), half-width alphanumeric (0x0021-0x007E), half-width katakana (0xFF61-0xFF9F)
- Corporate (`"C"`): full-width spaces allowed
- Non-corporate: full-width spaces **not** allowed
- Full-width spaces **not** allowed at start/end of string
### Katakana Fields
Allowed characters (Unicode ranges):
- Full-width space: 0x3000
- Full-width digits: 0xFF10-0xFF19
- Full-width uppercase alpha: 0xFF21-0xFF3A
- Full-width katakana: 0x30A1-0x30EF, 0x30F3 (ン), 0x30F4 (ヴ), 0x30FC (ー)
- Same corporate/non-corporate space rules as kanji fields
---
## Request Examples
### MNP Transfer (ALADIN operated, with User Management Service)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"aladinOperated": "10",
"masterAccount": "testAccount@test.ne.jp",
"masterPassword": "testPass",
"createType": "new",
"account": "08011112222",
"tempAccount": "08022223333",
"productNumber": "ZZ0009999999001",
"repAccount": "08000001111",
"size": "standard",
"addKind": "M",
"shipDate": "20170301",
"planCode": "100K_PLAN",
"globalIp": "20",
"deliveryCode": "XXXX"
}
```
### MNP Transfer (ALADIN operated, no User Management Service)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"aladinOperated": "10",
"createType": "new",
"account": "08011112223",
"tempAccount": "08022223334",
"productNumber": "ZZ0009999999002",
"repAccount": "08000001111",
"size": "nano",
"addKind": "M",
"shipDate": "20170301",
"planCode": "100K_PLAN",
"globalIp": "20"
}
```
### MNP Transfer (ALADIN not operated, with User Management Service, individual)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"masterAccount": "testAccount@test.ne.jp",
"masterPassword": "testPass",
"createType": "new",
"account": "08011112222",
"tempAccount": "08022223333",
"productNumber": "ZZ0009999999001",
"repAccount": "08000001111",
"size": "nano",
"addKind": "M",
"mnp": {
"reserveNumber": "1101201234",
"reserveExpireDate": "20170323",
"lastnameKanji": "山田",
"firstnameKanji": "太郎",
"lastnameZenKana": "ヤマダ",
"firstnameZenKana": "タロウ",
"gender": "M",
"birthday": "19900101"
},
"planCode": "100K_PLAN",
"globalIp": "20",
"deliveryCode": "XXXX"
}
```
### MNP Transfer (ALADIN not operated, no User Management Service, corporate)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"createType": "new",
"account": "08011112223",
"tempAccount": "08022223334",
"productNumber": "ZZ0009999999002",
"repAccount": "08000001111",
"size": "micro",
"addKind": "M",
"mnp": {
"reserveNumber": "1101201235",
"reserveExpireDate": "20170323",
"lastnameKanji": "フリービット 株式会社",
"lastnameZenKana": "フリービット カブシキカイシャ",
"gender": "C"
},
"planCode": "100K_PLAN",
"globalIp": "20"
}
```
### New Activation (ALADIN not operated, no User Management Service, with plan)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"createType": "new",
"account": "08011112224",
"tempAccount": "08011112224",
"productNumber": "ZZ0009999999003",
"repAccount": "08000001111",
"size": "nano",
"addKind": "N",
"planCode": "100K_PLAN",
"deliveryCode": "XXXX"
}
```
### New Activation (ALADIN not operated, no User Management Service, no plan)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"account": "08011112224",
"tempAccount": "08011112224",
"productNumber": "ZZ0009999999003",
"repAccount": "08000001111",
"size": "nano",
"addKind": "N",
"deliveryCode": "XXXX"
}
```
### Reissue (ALADIN not operated)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"account": "08011112225",
"tempAccount": "08022223336",
"productNumber": "ZZ0009999999004",
"size": "nano",
"addKind": "R",
"reissue": {
"oldSize": "micro",
"oldProductNumber": "CD0009999999004"
},
"globalIp": "20"
}
```
---
## 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 (masterAccount/account/tempAccount) issue |
| × | 400 | 202 | Bad Request | Parameter error - master password issue |
| × | 400 | 204 | Bad Request | Parameter error - other parameter issue |
| × | 400 | 215 | Bad Request | Parameter error - plan code issue |
| × | 400 | 228 | Bad Request | Parameter error - authentication key issue |
| × | 400 | 231 | Bad Request | Parameter error - global IP issue |
| × | 400 | 253 | Bad Request | Parameter error - last name (kanji) issue |
| × | 400 | 254 | Bad Request | Parameter error - first name (kanji) issue |
| × | 400 | 255 | Bad Request | Parameter error - last name (full katakana) issue |
| × | 400 | 256 | Bad Request | Parameter error - first name (full katakana) issue |
| × | 400 | 257 | Bad Request | Parameter error - gender issue |
| × | 400 | 258 | Bad Request | Parameter error - date of birth issue |
| × | 400 | 266 | Bad Request | Parameter error - product number (productNumber/oldProductNumber) issue |
| × | 400 | 267 | Bad Request | Parameter error - SIM size (size/oldSize) issue |
| × | 400 | 269 | Bad Request | Parameter error - representative number issue |
| × | 400 | 274 | Bad Request | Parameter error - delivery code issue |
| × | 400 | 276 | Bad Request | Parameter error - ship date issue |
| × | 400 | 278 | Bad Request | Parameter error - ALADIN operated flag issue |
| × | 400 | 279 | Bad Request | Parameter error - registration type issue |
| × | 400 | 307 | Bad Request | Parameter error - MNP reservation number issue |
| × | 400 | 308 | Bad Request | Parameter error - MNP reservation expiry date issue |
| × | 400 | 333 | Bad Request | Parameter error - activation type issue |
| × | 400 | 356 | Bad Request | Parameter error - unsupported pattern (ALADIN operated flag + activation type) |
| × | 403 | 205 | Auth Error | Authentication key problem |
| × | 404 | 232 | Not Found | Specified plan does not exist |
| × | 500 | 208 | NG | Account (masterAccount/account/tempAccount) duplicate error |
| × | 500 | 210 | NG | Account (masterAccount/account) not found error |
| × | 500 | 230 | NG | Account is waiting for async processing; request not allowed |
| × | 500 | 275 | NG | No available phone number inventory for the specified representative number |
| × | 500 | 284 | NG | Representative number is locked |
| × | 500 | 287 | NG | Representative number does not exist or is unavailable |
| × | 500 | 288 | NG | Product number is unavailable (does not exist, already in use, etc.) |
| × | 500 | 310 | NG | MNP reservation number has duplication or other issues |
| × | 500 | 334 | NG | Temporary phone number does not match product number |
| × | 500 | 342 | NG | SIM size mismatch (does not match managed SIM size) |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```
---
## Related APIs
| API | Name | Relationship |
| ------- | ---------------------------------------------- | ---------------------------------------------------------------- |
| PA05-41 | eSIM Account Activation | Similar API for eSIM activations (also supports MNP and reissue) |
| PA05-18 | MVNO Semi-Black Account Temporary Registration | Pre-staging API for semi-black SIM MNP (queue-based) |
| PA05-19 | MVNO Semi-Black Account Registration | Synchronous activation for semi-black SIMs |

View File

@ -0,0 +1,131 @@
# 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"
}
}
```

View File

@ -0,0 +1,295 @@
# PA05-41 - eSIM Account Activation (eSIMアカウント開通)
## Overview
Handles eSIM activation requests from OEM including new activations, MNP transfers, and reissues.
- Activation is **asynchronous** - not immediate; completion is notified via the "eSIM Request Completion Notification File"
- For file format details, refer to the "CSV File Format Definition (MVNO Edition)" sheet "eSIM依頼完了通知ファイル"
- When `aladinOperated` is `"10"` (operated) **and** `addKind` is not `"N"` (new), the API returns `400-356` (unsupported pattern)
---
## Request
### Method
`POST` (JSON format, URL-encoded)
### URL
```
https://[host]/emptool/api/mvno/esim/addAcnt/
```
### 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 | aladinOperated | ALADIN Operated Flag | 1 | Half-width numeric | 2 | 2 | - | `"10"`: Operated, `"20"`: Not operated. Defaults to `"20"` if omitted |
| 3 | masterAccount | Master Account | 1 | Alphanumeric + symbols | 1 | 64 | △ | IIC master account. Not required if: not using User Management Service, no planCode specified, or addKind is `"R"` |
| 4 | masterPassword | Master Password | 1 | Alphanumeric + symbols | 1 | 256 | △ | IIC master password. Required when createType is `"new"`. Not required if: not using User Management Service, no planCode specified, or addKind is `"R"` |
| 5 | createType | Registration Type | 1 | Half-width alpha | 3 | 3 | △ | `"new"`: Create new master account, `"add"`: Add service account to existing. `"add"` not allowed without User Management Service. Not required if: no planCode specified, or addKind is `"R"` |
| 6 | eid | eSIM Identifier | 1 | Half-width numeric | 32 | 32 | ◎ | Target SIM's eSIM identifier (EID) |
| 7 | account | Account | 1 | Half-width numeric | 11 | 14 | △ | Target SIM's phone number. Not required when aladinOperated is `"20"` and addKind is `"N"`. Required otherwise |
| 8 | simKind | SIM Type | 1 | Alphanumeric | 2 | 2 | △ | `"E2"`: No SMS, `"E3"`: With SMS, `"E0"`: With voice. Not required when addKind is `"R"`. Required otherwise |
| 9 | contractLine | Contract Line Type | 1 | Alphanumeric | 2 | 2 | △ | `"4G"`: 4G line, `"5G"`: 5G line. Not required when aladinOperated is `"10"` or addKind is `"R"`. Defaults to `"4G"` if omitted |
| 10 | repAccount | Representative Number | 1 | Half-width numeric | 11 | 14 | △ | Parent phone number. Required when aladinOperated is `"10"` and addKind is `"N"`. Not required when addKind is `"R"`. Otherwise required for specific representative number activation |
| 11 | addKind | Activation Type | 1 | Half-width alpha | 1 | 1 | ◎ | `"N"`: New, `"M"`: MNP transfer, `"R"`: Reissue |
| 12 | reissue | Reissue Info | 1 | Object | - | - | △ | Required when aladinOperated is `"20"` and addKind is `"R"`. Not required otherwise |
| 13 | reissue.oldProductNumber | Old Product Number | 2 | Alphanumeric | 15 | 15 | △ | Product number of the SIM before reissue. First 2 chars uppercase alpha, remaining 13 digits (e.g., `AXxxxxxxxxxxxxx`). Only for physical SIM → eSIM |
| 14 | reissue.oldEid | Old eSIM Identifier | 2 | Half-width numeric | 32 | 32 | △ | EID of the eSIM before reissue. Only for eSIM → eSIM |
| 15 | mnp | MNP Info | 1 | Object | - | - | △ | Required when aladinOperated is `"20"` and addKind is `"M"`. Not required otherwise |
| 16 | mnp.reserveNumber | MNP Reservation Number | 2 | Half-width numeric | 10 | 10 | ○ | MNP reservation number (no hyphens) |
| 17 | mnp.lastnameKanji | Last Name (Kanji) | 2 | Full-width characters | 1 | 50 | ○ | UTF-8 range. For non-corporate: lastname + full-width space + firstname ≤ 50 chars. For corporate (gender `"C"`): lastname ≤ 50 chars. See [Character Rules](#character-rules) |
| 18 | mnp.firstnameKanji | First Name (Kanji) | 2 | Full-width characters | \* | \* | △ | Required when gender is not `"C"` (corporate). See lastname for length rules |
| 19 | mnp.lastnameZenKana | Last Name (Full Katakana) | 2 | Full-width katakana | 1 | 50 | ○ | UTF-8 range. For non-corporate: lastname + full-width space + firstname ≤ 50 chars. For corporate (gender `"C"`): lastname ≤ 50 chars. See [Character Rules](#character-rules) |
| 20 | mnp.firstnameZenKana | First Name (Full Katakana) | 2 | Full-width katakana | \* | \* | △ | Required when gender is not `"C"` (corporate). See lastname for length rules |
| 21 | mnp.gender | Gender | 2 | Half-width alpha | 1 | 1 | ○ | `"M"`: Male, `"W"`: Female, `"C"`: Corporate |
| 22 | mnp.birthday | Date of Birth | 2 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. Required when gender is not `"C"` (corporate) |
| 23 | shipDate | Ship Date | 1 | Half-width numeric | 8 | 8 | △ | YYYYMMDD format. Past dates OK, future dates NG. Required when aladinOperated is `"10"` |
| 24 | planCode | Plan Code | 1 | Alphanumeric + symbols | 1 | 32 | - | Plan to apply. No plan = no connectivity. Not required when addKind is `"R"` |
| 25 | deliveryCode | Delivery Code | 1 | Alphanumeric | 1 | 10 | - | Arbitrary code set by each OEM |
**Legend:** ◎ Required | ○ Required within level | △ Conditional
---
## Character Rules
### Kanji Fields
- Allowed: Characters within UTF-8 range that can be converted to Windows-31J, **excluding**:
- Half-width space (`U+0020`)
- Half-width alphanumeric (`U+0021``U+007E`)
- Half-width katakana (`U+FF61``U+FF9F`)
- Full-width spaces: Allowed within string for corporate (`"C"`) only; never allowed at string edges
### Katakana Fields
- Allowed Unicode ranges only:
- Full-width space: `U+3000`
- Full-width digits: `U+FF10``U+FF19`
- Full-width uppercase alpha: `U+FF21``U+FF3A`
- Full-width katakana: `U+30A1``U+30EF`, `U+30F3` (ン), `U+30F4` (ヴ), `U+30FC` (ー)
- Full-width spaces: Allowed within string for corporate (`"C"`) only; never allowed at string edges
---
## Request Examples
### New Activation (ALADIN not operated, no User Management Service, with plan, no representative number)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"createType": "new",
"eid": "11112222333344445555666677778888",
"simKind": "E2",
"contractLine": "4G",
"addKind": "N",
"planCode": "100K_PLAN",
"deliveryCode": "XXXX"
}
```
### New Activation (ALADIN not operated, no User Management Service, no plan, with representative number)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"eid": "11112222333344445555666677778888",
"simKind": "E0",
"repAccount": "08000001111",
"addKind": "N",
"deliveryCode": "XXXX"
}
```
### MNP Transfer (ALADIN operated, with User Management Service, no representative number)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"aladinOperated": "10",
"masterAccount": "testAccount@test.ne.jp",
"masterPassword": "testPass",
"createType": "new",
"eid": "11112222333344445555666677778888",
"account": "08011112222",
"simKind": "E0",
"contractLine": "4G",
"addKind": "M",
"shipDate": "20170301",
"planCode": "100K_PLAN",
"deliveryCode": "XXXX"
}
```
### MNP Transfer (ALADIN operated, no User Management Service, with representative number)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"aladinOperated": "10",
"createType": "new",
"eid": "11112222333344445555666677778888",
"account": "08011112223",
"simKind": "E3",
"repAccount": "08000001111",
"addKind": "M",
"shipDate": "20170301",
"planCode": "100K_PLAN"
}
```
### MNP Transfer (ALADIN not operated, with User Management Service, individual)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"masterAccount": "testAccount@test.ne.jp",
"masterPassword": "testPass",
"createType": "new",
"eid": "11112222333344445555666677778888",
"account": "08011112222",
"simKind": "E0",
"contractLine": "5G",
"addKind": "M",
"mnp": {
"reserveNumber": "1101201234",
"lastnameKanji": "山田",
"firstnameKanji": "太郎",
"lastnameZenKana": "ヤマダ",
"firstnameZenKana": "タロウ",
"gender": "M",
"birthday": "19900101"
},
"planCode": "100K_PLAN",
"deliveryCode": "XXXX"
}
```
### MNP Transfer (ALADIN not operated, no User Management Service, corporate, with representative number)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"createType": "new",
"eid": "11112222333344445555666677778888",
"account": "08011112223",
"simKind": "E0",
"repAccount": "08000001111",
"addKind": "M",
"mnp": {
"reserveNumber": "1101201235",
"lastnameKanji": "フリービット 株式会社",
"lastnameZenKana": "フリービット カブシキカイシャ",
"gender": "C"
},
"planCode": "100K_PLAN"
}
```
### Reissue (ALADIN not operated, physical SIM → eSIM)
```json
{
"authKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"account": "08011112225",
"eid": "11112222333344445555666677778888",
"addKind": "R",
"reissue": {
"oldProductNumber": "CD0009999999004"
}
}
```
---
## 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 (masterAccount/account) issue |
| × | 400 | 202 | Bad Request | Parameter error - master password issue |
| × | 400 | 204 | Bad Request | Parameter error - other parameter issue |
| × | 400 | 215 | Bad Request | Parameter error - plan code issue |
| × | 400 | 228 | Bad Request | Parameter error - authentication key (authKey) issue |
| × | 400 | 253 | Bad Request | Parameter error - last name (kanji) issue |
| × | 400 | 254 | Bad Request | Parameter error - first name (kanji) issue |
| × | 400 | 255 | Bad Request | Parameter error - last name (full katakana) issue |
| × | 400 | 256 | Bad Request | Parameter error - first name (full katakana) issue |
| × | 400 | 257 | Bad Request | Parameter error - gender issue |
| × | 400 | 258 | Bad Request | Parameter error - date of birth issue |
| × | 400 | 266 | Bad Request | Parameter error - product number (productNumber/oldProductNumber) issue |
| × | 400 | 269 | Bad Request | Parameter error - representative number issue |
| × | 400 | 274 | Bad Request | Parameter error - delivery code issue |
| × | 400 | 276 | Bad Request | Parameter error - ship date issue |
| × | 400 | 277 | Bad Request | Parameter error - SIM type issue |
| × | 400 | 278 | Bad Request | Parameter error - ALADIN operated flag issue |
| × | 400 | 279 | Bad Request | Parameter error - registration type issue |
| × | 400 | 307 | Bad Request | Parameter error - MNP reservation number issue |
| × | 400 | 333 | Bad Request | Parameter error - activation type issue |
| × | 400 | 356 | Bad Request | Parameter error - unsupported pattern (ALADIN operated flag + activation type) |
| × | 400 | 360 | Bad Request | Parameter error - contract type issue |
| × | 400 | 370 | Bad Request | Parameter error - eSIM identifier (eid/oldEid) issue |
| × | 403 | 205 | Auth Error | Authentication key problem |
| × | 404 | 232 | Not Found | Specified plan does not exist |
| × | 500 | 208 | NG | Account (masterAccount/account) duplicate error |
| × | 500 | 210 | NG | Account (masterAccount/account) not found error |
| × | 500 | 230 | NG | Account is waiting for async processing; request not allowed |
| × | 500 | 275 | NG | No available phone number inventory for the specified representative number |
| × | 500 | 284 | NG | Representative number is locked |
| × | 500 | 287 | NG | Representative number does not exist or is unavailable |
| × | 500 | 288 | NG | Product number is unavailable (does not exist or already in use) |
| × | 500 | 289 | NG | SIM type does not match representative number's type |
| × | 500 | 304 | NG | SIM type does not match representative number's type |
| × | 500 | 310 | NG | MNP reservation number has duplication or other issues |
| × | 500 | 371 | NG | eSIM identifier (eid) duplicate error |
| × | 500 | 372 | NG | eSIM identifier (eid) not found error |
| × | 500 | 374 | NG | Specified eSIM identifier has reached the monthly activation limit |
| × | 500 | 900 | NG | Unexpected error occurred |
---
## Response Example
```json
{
"resultCode": 100,
"status": {
"message": "OK",
"statusCode": 200
}
}
```