From 191a377657a6a2fd2c22ec95a31e3dd078d7c7a8 Mon Sep 17 00:00:00 2001 From: Temuuleenn Date: Thu, 5 Feb 2026 16:26:46 +0900 Subject: [PATCH] fix: enhance Order Activation Flow and improve WHMCS integration - Refactor executeSfActivatedUpdate to only set Activation_Status__c, deferring Status change. - Update WHMCS custom fields with new SIM Number, Serial Number, and EID after order acceptance. - Modify Opportunity WH_Registeration__c field for better WHMCS linking. - Populate new SIM Inventory assignment fields: Assigned_Account__c, Assigned_Order__c, SIM_Type__c. - Remove support for PA05-18 Semi-Black SIM registration, switching to PA02-01 call. - Adjust me-status check to verify Status: Processed instead of Activated. --- Multilingual-Implementation-Plan.docx | Bin 0 -> 18622 bytes .../PA02-01_account-registration.md | 191 ++++++++++++++ .../PA02-04_account-cancellation.md | 116 +++++++++ .../PA03-02_account-detail-info.md | 240 ++++++++++++++++++ freebit-api-docs/PA04-04_spec-quota-add.md | 119 +++++++++ freebit-api-docs/PA05-01_mvno-traffic-info.md | 142 +++++++++++ freebit-api-docs/PA05-21_mvno-plan-change.md | 95 +++++++ 7 files changed, 903 insertions(+) create mode 100644 Multilingual-Implementation-Plan.docx create mode 100644 freebit-api-docs/PA02-01_account-registration.md create mode 100644 freebit-api-docs/PA02-04_account-cancellation.md create mode 100644 freebit-api-docs/PA03-02_account-detail-info.md create mode 100644 freebit-api-docs/PA04-04_spec-quota-add.md create mode 100644 freebit-api-docs/PA05-01_mvno-traffic-info.md create mode 100644 freebit-api-docs/PA05-21_mvno-plan-change.md diff --git a/Multilingual-Implementation-Plan.docx b/Multilingual-Implementation-Plan.docx new file mode 100644 index 0000000000000000000000000000000000000000..123e16ec68e6d66971d90738b74fe3e5cf8a37a0 GIT binary patch literal 18622 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 literal 0 HcmV?d00001 diff --git a/freebit-api-docs/PA02-01_account-registration.md b/freebit-api-docs/PA02-01_account-registration.md new file mode 100644 index 00000000..ca49b430 --- /dev/null +++ b/freebit-api-docs/PA02-01_account-registration.md @@ -0,0 +1,191 @@ +# PA02-01 - Account Registration (アカウント登録) + +## Overview + +Creates a new account for the requested service. + +- Account creation is **asynchronous** - may take up to 10 minutes from specified time +- When using User Management Service: + - Master account on PTv2 is required; other service accounts are optional + - Master account can be created new or use existing + - All created accounts are linked via the master account + +--- + +## Request + +### Method + +`POST` (JSON format) + +### URL + +``` +https://[host]/emptool/api/master/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 | +| 2 | version | Version Info | △ | Version number specified by freebit | + +### JSON Parameters + +| No | Parameter | Name | Level | Type | Required | Description | +| --- | ----------------------- | ------------------ | ----- | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | +| 1 | authKey | Authentication Key | 1 | Alphanumeric | ◎ | Obtained from OEM authentication | +| 2 | masterAccount | Master Account | 1 | Alphanumeric + symbols | △ | IIC master account. Required when using User Management Service | +| 3 | masterPassword | Master Password | 1 | Alphanumeric + symbols | △ | IIC master password. Required when createType is "new" with User Management Service | +| 4 | startDate | Start Date | 1 | Alphanumeric | - | Date when account becomes active. Immediate if not specified | +| 5 | createType | Registration Type | 1 | Alphanumeric | ◎ | `"new"`: Create new master account, `"add"`: Add to existing. "add" not allowed without User Management Service | +| 6 | relationCode | Relation Code | 1 | Alphanumeric | △ | Required when using User Management Service | +| 7 | requestDatas | Request Data | 1 | Array | ◎ | List of service accounts to create | +| 8 | requestDatas[].kind | Service Type | 2 | Alphanumeric | ◎ | Service type (e.g., "MVNO", "MASTER") | +| 9 | requestDatas[].account | Account | 2 | Alphanumeric + symbols | ○ | Service account. For MVNO, specify phone number | +| 10 | requestDatas[].password | Login Password | 2 | Alphanumeric + symbols | △ | Service password. Not specified for MVNO | +| 11 | requestDatas[].planCode | Plan Code | 2 | Alphanumeric | △ | Plan to apply (MVNO) | + +### MVNO Service Options + +| No | Parameter | Name | Type | Min | Max | Required | Description | +| --- | --------- | ------------------ | ------------------ | --- | --- | -------- | ------------------------------------------- | +| 1 | globalIp | Global IP (yes/no) | Half-width numeric | 2 | 2 | △ | Whether to use global IP. Contract required | + +**Legend:** ◎ Required | ○ Required within level | △ Conditional + +--- + +## Request Examples + +### Without User Management Service + +```json +{ + "authKey": "XXXXXXXXXX", + "createType": "new", + "requestDatas": [ + { + "kind": "MVNO", + "account": "08038433843", + "planCode": "LTE3G_P01" + } + ] +} +``` + +### With User Management Service + +```json +{ + "authKey": "XXXXXXXXXX", + "masterAccount": "testAccount@test.ne.jp", + "masterPassword": "password123", + "createType": "new", + "relationCode": "BA-ABA-001", + "requestDatas": [ + { + "kind": "MVNO", + "account": "08038433843", + "planCode": "LTE3G_P01" + } + ] +} +``` + +--- + +## Response + +### Format + +JSON + +### Parameters + +| No | Parameter | Name | Level | Type | Description | +| --- | -------------------------- | ------------- | ----- | ---------------------- | ------------------------------------------------------------------------ | +| 1 | resultCode | Result Code | 1 | Numeric | Overall result code | +| 2 | status | Status | 1 | Object | Overall status | +| 3 | status.message | Message | 2 | Alphanumeric + symbols | Overall result message | +| 4 | status.statusCode | Status Code | 2 | Numeric | Overall status code | +| 5 | responseDatas | Response Data | 1 | Array | Processed service account information | +| 6 | responseDatas[].kind | Service Type | 2 | Alphanumeric + symbols | Service type | +| 7 | responseDatas[].resultCode | Result Code | 2 | Numeric | Per-account result code | +| 8 | responseDatas[].account | Account | 2 | Alphanumeric + symbols | For MVNO, phone number is returned | +| 9 | responseDatas[].ipv4 | IPv4 Address | 2 | Alphanumeric + symbols | Allocated IP if fixed IP specified. Empty ("") if not. Contract required | +| 10 | responseDatas[].ipv6 | IPv6 Address | 2 | Alphanumeric + symbols | Allocated IP if fixed IP specified. Empty ("") if not. Contract required | + +--- + +## 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/to/tempAccount issue | +| × | 400 | 202 | Bad Request | Parameter error - password issue | +| × | 400 | 204 | Bad Request | Parameter error - other parameter issue | +| × | 400 | 220 | Bad Request | Specified plan does not exist | +| × | 500 | 208 | NG | Account duplicate error | +| × | 500 | 210 | NG | Account not found error | +| × | 500 | 212 | NG | Request failed due to error in another service account | +| × | 500 | 233 | NG | Specified service is not provided | +| × | 500 | 900 | NG | Unexpected error occurred | + +--- + +## Response Examples + +### Without User Management Service (Success) + +```json +{ + "resultCode": "100", + "status": { + "message": "OK", + "statusCode": "200" + }, + "responseDatas": [ + { + "kind": "MVNO", + "account": "09999999999", + "ipv4": "", + "ipv6": "", + "resultCode": "100" + } + ] +} +``` + +### With User Management Service (Success) + +```json +{ + "resultCode": "100", + "status": { + "message": "OK", + "statusCode": "200" + }, + "responseDatas": [ + { + "kind": "MASTER", + "account": "testAccount@test.ne.jp", + "resultCode": "100" + }, + { + "kind": "MVNO", + "account": "09999999999", + "ipv4": "", + "ipv6": "", + "resultCode": "100" + } + ] +} +``` diff --git a/freebit-api-docs/PA02-04_account-cancellation.md b/freebit-api-docs/PA02-04_account-cancellation.md new file mode 100644 index 00000000..571ccdf1 --- /dev/null +++ b/freebit-api-docs/PA02-04_account-cancellation.md @@ -0,0 +1,116 @@ +# PA02-04 - Account Cancellation (アカウント解約) + +## Overview + +Cancels the specified service account. + +- Account cancellation is **asynchronous** - may take up to 10 minutes from specified time +- **Master account cannot be cancelled** via this API + +--- + +## Request + +### Method + +`POST` (JSON format) + +### URL + +``` +https://[host]/emptool/api/master/cnclAcnt/ +``` + +### 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 | Required | Description | +| --- | --------- | ------------------ | ----- | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| 1 | authKey | Authentication Key | 1 | Alphanumeric | ◎ | Obtained from OEM authentication | +| 2 | kind | Service Type | 1 | Alphanumeric + symbols | ◎ | Target service. Master account not allowed | +| 3 | account | Account | 1 | Alphanumeric + symbols | ◎ | Target account. For MVNO, specify phone number | +| 4 | runDate | Scheduled Date | 1 | Half-width numeric | - | Cancellation date. Format: `YYYYMMDD` (also accepts `YYYY/MM/DD`, `YYYY-MM-DD`). Immediate if not specified | + +**Legend:** ◎ Required + +--- + +## Request Example + +### Immediate Cancellation + +```json +{ + "authKey": "XXXXXXXXXX", + "kind": "MVNO", + "account": "08038433843" +} +``` + +### Scheduled Cancellation + +```json +{ + "authKey": "XXXXXXXXXX", + "kind": "MVNO", + "account": "08038433843", + "runDate": "20240331" +} +``` + +--- + +## Response + +### Format + +JSON + +### Parameters + +| No | Parameter | Name | Level | Type | Required | 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 | +| ○ | 200 | 101 | OK | Already satisfies request (already cancelled) | +| × | 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 | 228 | Bad Request | Parameter error - authKey issue | +| × | 403 | 205 | Auth Error | Authentication key problem | +| × | 500 | 210 | NG | Account not found | +| × | 500 | 230 | NG | Account is waiting for async processing | +| × | 500 | 900 | NG | Unexpected error occurred | + +--- + +## Response Example + +```json +{ + "resultCode": "100", + "status": { + "message": "OK", + "statusCode": "200" + } +} +``` diff --git a/freebit-api-docs/PA03-02_account-detail-info.md b/freebit-api-docs/PA03-02_account-detail-info.md new file mode 100644 index 00000000..dc51409f --- /dev/null +++ b/freebit-api-docs/PA03-02_account-detail-info.md @@ -0,0 +1,240 @@ +# PA03-02 - Account Detail Information (アカウント詳細情報取得) + +## Overview + +Returns detailed information for the requested account/service. Only one account can be specified per request. + +- **Non-master account**: Returns service details + linked master account info +- **Master account**: Returns list of all linked accounts (without individual details) + +--- + +## Request + +### Method + +`POST` (JSON format) + +### 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 | Required | Description | +| --- | ---------------------- | ------------------ | ----- | ---------------------- | -------- | ----------------------------------------------------------------------------------------------- | +| 1 | authKey | Authentication Key | 1 | Alphanumeric | ◎ | Obtained from OEM authentication | +| 2 | displayPass | Display Password | 1 | Numeric | △ | Whether to return password. Not processed for MVNO. `10`: Return, `20`: Do not return (default) | +| 3 | version | Version | 1 | Alphanumeric | △ | Version number specified by freebit | +| 4 | requestDatas | Request Data | 1 | Array | ◎ | Target account info. List format but only 1 item recognized | +| 5 | requestDatas[].kind | Service Type | 2 | Alphanumeric + symbols | ◎ | Target service. `"MASTER"` for master account | +| 6 | requestDatas[].account | Account | 2 | Alphanumeric + symbols | ◎ | Target account. For MVNO, specify phone number | + +**Legend:** ◎ Required | ○ Required within level | △ Conditional + +--- + +## Request Examples + +### Get Master Account Info + +```json +{ + "authKey": "XXXXXXXXXX", + "requestDatas": [ + { + "kind": "MASTER", + "account": "testMaster@test.ne.jp" + } + ] +} +``` + +### Get MVNO Account Info + +```json +{ + "authKey": "XXXXXXXXXX", + "version": "2", + "requestDatas": [ + { + "kind": "MVNO", + "account": "08038433843" + } + ] +} +``` + +--- + +## Response + +### Format + +JSON + +### Base 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 | +| 5 | masterAccount | Master Account | 1 | Alphanumeric + symbols | Master account linked to requested account | +| 6 | responseDatas | Response Data | 1 | Array/Object | Processed service account information | +| 7 | responseDatas.resultCode | Result Code | 2 | Numeric | Per-account result code | +| 8 | responseDatas.kind | Service Type | 2 | Alphanumeric + symbols | Service type | +| 9 | responseDatas.account | Account | 2 | Alphanumeric + symbols | Account identifier | +| 10 | responseDatas.state | State | 2 | Alphanumeric + symbols | Account state (see State Values) | +| 11 | responseDatas.startDate | Start Date | 2 | Alphanumeric | Activation date (YYYYMMDD) | +| 12 | responseDatas.async | Async Request | 2 | Object | Pending async request. Empty `{}` if none | +| 13 | responseDatas.async.func | Function | 3 | Alphabetic | Async operation type (see Async Functions) | +| 14 | responseDatas.async.date | Date | 3 | Alphabetic | Scheduled execution date (YYYYMMDD) | + +### State Values + +| Value | Description | +| --------- | ----------------------------- | +| waiting | Waiting for setup (MVNO only) | +| temporary | Temporary registration | +| active | In service | +| suspended | Suspended | +| obsolete | Cancelled | + +### Async Function Values + +| Value | Description | +| --------- | --------------- | +| regist | Registration | +| stop | Suspension | +| resume | Resumption | +| cancel | Cancellation | +| revival | Revival | +| plnset | Plan set | +| plnunset | Plan unset | +| change | Change | +| chgctract | Contract change | + +--- + +## MVNO-Specific Response Parameters + +| Parameter | Name | Type | Description | +| ------------ | ------------- | ---------------------- | ----------------------------------- | +| planCode | Plan Code | Alphanumeric + symbols | Empty ("") if no plan set | +| iccid | SIM Card ID | Numeric | SIM card identifier | +| imsi | SIM ID | Numeric | SIM identifier | +| contractLine | Contract Line | Alphanumeric | Line type (e.g., "4G") | +| size | SIM Size | Alphabetic | `standard`, `nano`, `micro` | +| sms | SMS Status | Numeric | `10`: Active, `20`: Inactive | +| talk | Voice Status | Numeric | `10`: Active, `20`: Inactive | +| ipv4 | IPv4 Address | Alphanumeric + symbols | Empty ("") if not using global IPv4 | +| ipv6 | IPv6 Address | Alphanumeric + symbols | Empty ("") if not using global IPv6 | +| quota | Quota | Numeric | Data quota value | + +### Voice Option Parameters (Level 3) + +| Parameter | Name | Type | Description | +| -------------------- | ---------------------- | ---------------------- | ------------------------------------------------------- | +| state | State | Alphanumeric + symbols | `waiting`, `temporary`, `active`, `obsolete` | +| voiceMail | Voicemail | Numeric | `10`: Enabled, `20`: Disabled | +| callWaiting | Call Waiting | Numeric | `10`: Enabled, `20`: Disabled | +| callTransfer | Call Transfer | Numeric | `10`: Enabled, `20`: Disabled | +| callTransferToWorld | International Transfer | Numeric | `10`: Enabled, `20`: Disabled | +| worldCall | WORLD CALL | Numeric | `10`: Amount specified, `11`: Unlimited, `20`: Disabled | +| worldCallCreditLimit | WORLD CALL Limit | Numeric | Amount (when worldCall is `10`) | +| worldWing | WORLD WING | Numeric | `10`: Amount specified, `11`: Unlimited, `20`: Disabled | +| worldWingCreditLimit | WORLD WING Limit | Numeric | Amount 50000-1000000 (when worldWing is `10`) | +| async | Async Request | Object | Voice option async request | + +--- + +## 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 | 226 | Bad Request | Parameter error - displayPass issue | +| × | 400 | 227 | Bad Request | Parameter error - requestDatas issue | +| × | 400 | 228 | Bad Request | Parameter error - authKey issue | +| × | 400 | 236 | Bad Request | Parameter error - version issue | +| × | 403 | 205 | Auth Error | Authentication key problem | +| × | 500 | 210 | NG | Account not found | +| × | 500 | 211 | NG | Account status does not allow request | + +--- + +## Response Examples + +### Master Account Query + +```json +{ + "resultCode": 100, + "status": { + "message": "OK", + "statusCode": 200 + }, + "masterAccount": "testMaster@test.ne.jp", + "responseDatas": [ + { + "kind": "MASTER", + "account": "testAccount@test.ne.jp", + "state": "active", + "startDate": 20120401, + "relationCode": "testuser", + "resultCode": 100 + }, + { + "kind": "MVNO", + "account": 8038433843, + "state": "suspended", + "resultCode": 100 + } + ] +} +``` + +### MVNO Account Query (with async) + +```json +{ + "resultCode": 100, + "status": { + "message": "OK", + "statusCode": 200 + }, + "masterAccount": "testMaster@test.ne.jp", + "responseDatas": { + "kind": "MVNO", + "account": 8038433843, + "state": "active", + "planCode": "LTE3G_P01", + "startDate": 20130901, + "iccid": 8981199993109195000, + "imsi": 990103120337753, + "contractLine": "4G", + "size": "standard", + "sms": 10, + "talk": 10, + "ipv4": "", + "ipv6": "", + "quota": 3161.31, + "async": { + "func": "regist", + "date": 20131201 + }, + "resultCode": "100" + } +} +``` diff --git a/freebit-api-docs/PA04-04_spec-quota-add.md b/freebit-api-docs/PA04-04_spec-quota-add.md new file mode 100644 index 00000000..90838c56 --- /dev/null +++ b/freebit-api-docs/PA04-04_spec-quota-add.md @@ -0,0 +1,119 @@ +# 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 diff --git a/freebit-api-docs/PA05-01_mvno-traffic-info.md b/freebit-api-docs/PA05-01_mvno-traffic-info.md new file mode 100644 index 00000000..abfce592 --- /dev/null +++ b/freebit-api-docs/PA05-01_mvno-traffic-info.md @@ -0,0 +1,142 @@ +# PA05-01 - MVNO Traffic Information (MVNO通信情報取得) + +## Overview + +Returns current plan traffic information for the requested MVNO service account. + +- Only **one account** can be specified per request +- Cannot retrieve traffic info if no plan is set +- Available for **regular SIM** and **share groups** only +- NOT available for SIMs belonging to a share group + +--- + +## Usage Notes & Restrictions + +> **Warning**: This API is for per-SIM (phone number) or per-share-group (share group code) queries. +> +> - **Do NOT use for bulk retrieval** of multiple SIMs under an operator +> - Bulk queries cause high server load and affect other operators +> - For bulk SIM data, contact freebit for CSV/TXT export options + +--- + +## Request + +### Method + +`POST` (JSON format) + +### URL + +``` +https://[host]/emptool/api/mvno/getTrafficInfo/ +``` + +### JSON Parameters + +| No | Parameter | Name | Level | Type | Required | Description | +| --- | --------- | ------------------ | ----- | ---------------------- | -------- | --------------------------------------- | +| 1 | authKey | Authentication Key | 1 | Alphanumeric | ◎ | Obtained from OEM authentication | +| 2 | account | Account | 1 | Alphanumeric + symbols | ◎ | Target phone number or share group code | + +**Legend:** ◎ Required | △ Conditional + +--- + +## Request Examples + +### MVNO Account Traffic + +```json +{ + "authKey": "XXXXXXXXXX", + "account": "09012345678" +} +``` + +### Share Group Traffic + +```json +{ + "authKey": "XXXXXXXXXX", + "account": "AAA0_00000000001" +} +``` + +--- + +## 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 | +| 5 | account | Account | 1 | Alphanumeric + symbols | Queried account | +| 6 | traffic | Traffic Info | 1 | Object | Traffic data for target date | +| 7 | traffic.today | Today | 2 | Numeric | Traffic used today (KB). `0` if no traffic | +| 8 | traffic.inRecentDays | Recent Days | 2 | String | Comma-separated daily traffic (KB). **Empty ("") for share groups** | +| 9 | traffic.blackList | Blacklist | 2 | Numeric | `10`: Blacklisted, `20`: Not blacklisted | + +--- + +## Response Codes + +| Status | Status Code | Detail Code | Message | Description | +| ------ | ----------- | ----------- | ----------- | --------------------------------------- | +| ○ | 200 | 100 | OK | Success | +| × | 400 | 201 | Bad Request | Parameter error - account issue | +| × | 400 | 204 | Bad Request | Parameter error - other parameter 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 | 240 | NG | Specified phone number issue | + +--- + +## Response Examples + +### MVNO Account + +```json +{ + "resultCode": "100", + "status": { + "message": "OK", + "statusCode": "200" + }, + "account": "09012345678", + "traffic": { + "today": "100", + "inRecentDays": "100,200,300", + "blackList": "10" + } +} +``` + +### Share Group + +```json +{ + "resultCode": "100", + "status": { + "message": "OK", + "statusCode": "200" + }, + "account": "AAA0_00000000001", + "traffic": { + "today": "100", + "inRecentDays": "", + "blackList": "10" + } +} +``` diff --git a/freebit-api-docs/PA05-21_mvno-plan-change.md b/freebit-api-docs/PA05-21_mvno-plan-change.md new file mode 100644 index 00000000..6dc5ce11 --- /dev/null +++ b/freebit-api-docs/PA05-21_mvno-plan-change.md @@ -0,0 +1,95 @@ +# PA05-21 - MVNO Plan Change (MVNOプラン変更) + +## Overview + +Changes (removes & sets) the plan configured on the requested account/MVNO service account. + +- Can be used for accounts currently in service +- Execution can be immediate or scheduled for a specified date/time + +--- + +## Request + +### Method + +`POST` (JSON format) + +### URL + +``` +https:// +``` + +### Parameters + +| No | Parameter | Name | Type | Min | Max | Required | Description | +| --- | --------- | ------------------ | ---------------------- | --- | --- | -------- | --------------------------------------------------------------------------------------------------- | +| 1 | authKey | Authentication Key | Alphanumeric | - | - | ◎ | Obtained from OEM authentication | +| 2 | account | Account | Alphanumeric + symbols | - | - | ◎ | Target SIM phone number | +| 3 | planCode | Plan Code | Half-width numeric | 1 | 32 | ◎ | Specify the plan to apply | +| 4 | globalIp | Global IP (yes/no) | Half-width numeric | 2 | 2 | △ | Whether to use global IP. Contract required. `20`: Disabled. If not specified, processing continues | +| 5 | runTime | Execution Time | Half-width numeric | - | - | - | Scheduled execution date (YYYYMMDD format) | + +### Request Example + +```json +{ + "authKey": "XXXXXXXXXX", + "account": "09012345678", + "planCode": "LTE3G_P01", + "globalIp": "20", + "runTime": "20150227" +} +``` + +--- + +## Response + +### Format + +JSON + +### Parameters + +| No | Parameter | Name | Type | Description | +| --- | ----------------- | ------------------ | --------------------------------- | ----------------------------------------------------------------------------------------------- | +| 1 | resultCode | Result Code | Numeric | Processing result code | +| 2 | status | Status | Object | Status details | +| 3 | status.message | Message | Alphanumeric + symbols | Processing result message | +| 4 | status.statusCode | Detail Result Code | Numeric | Detailed processing result code | +| 5 | ipv4 | IPv4 Address | Half-width numeric + symbols | Allocated IP address if fixed IP was specified. Empty ("") if not specified. Contract required. | +| 6 | ipv6 | IPv6 Address | Half-width alphanumeric + symbols | Allocated IP address if fixed IP was specified. Empty ("") if not specified. Contract required. | + +--- + +## Response Codes + +| Status | Status Code | Detail Code | Message | Description | +| ------ | ----------- | ----------- | ----------- | ----------------------------------------------- | +| ○ | 200 | 100 | OK | Success | +| × | 400 | 220 | Bad Request | Parameter error - planCode issue | +| × | 400 | 231 | Bad Request | Parameter error - globalIp issue | +| × | 403 | 205 | Auth Error | Authentication key problem | +| × | 500 | 210 | NG | Account not found | +| × | 500 | 211 | NG | Account status does not allow request execution | +| × | 500 | 230 | NG | Account is waiting for async processing | +| × | 500 | 330 | NG | Account belongs to a share group | +| × | 500 | 900 | NG | Unexpected error occurred | + +--- + +## Response Example + +```json +{ + "resultCode": 100, + "status": { + "message": "OK", + "statusCode": 100 + }, + "ipv4": "", + "ipv6": "" +} +```