Skip to content
userinfo

Web Call Example ​

json
{
  "name": "userinfo",
  "data": null
}

App return ​

Account
  • id: User Unique ID
    string

  • account: User Account
    string

  • username: Username
    string

  • realName: Real Name
    string

  • idNo: ID Number
    string

  • email: Email
    string

  • phoneNo: Mobile Number
    string

  • birthday: Birthday
    string

  • memberType: Membership Type
    string

    "personal": Regular Member

    "organization": Organizational Member
    "foreigner": Foreign National
    "employee": Taipei City Government Employee
    
  • verifyLevel: Member Verification Level
    string

    0: Unverified
    > Greater Than 0: Real Name Verified

  • addresses: Mailing Address
    array[Address]

    Address:
    • zip3: Postal Code
      int

    • city: Township/City
      string

    • town: Urban Area
      string

    • village: Neighborhood
      string

    • street: Street
      string

    • usageType: Label Type
      string

      0: Other
      > 1: Home
      > 2: Company

    • seq: Serial Number
      int

    • priority: Is Default Address
      bool

  • residentAddress: Registered Address
    string

  • citizen: Is Taipei Citizen
    bool

  • nativePeople: Is Indigenous
    bool

  • cityInternetUid: Old Online Citizen ID
    string

App return example ​

json
{
  "name": "userinfo",
  "data": {
    "id": "7f3562f4-bb3f-4ec7-89b9-da3b4b5ff250",
    "account": "wz7786",
    "username": "Wesley",
    "realName": "金大森",
    "idNo": "A123456789",
    "email": "ist83903@bcaoo.com",
    "phoneNo": "0932166777",
    "birthday": "1988/12/12",
    "memberType": "personal",
    "verifyLevel": "3",
    "addresses": [
      {
        "zip3": 104,
        "city": "臺北市",
        "town": "中山區",
        "village": "正得里",
        "street": "吉林路",
        "usageType": "0",
        "seq": 1,
        "priority": true
      }
    ],
    "residentAddress": "臺北市中山區吉林路 69 號 4 樓",
    "citizen": true,
    "nativePeople": false,
    "cityInternetUid": ""
  }
}
launch_map

Web Call Example ​

json
{
  "name": "launch_map",
  "data": "https://maps.app.goo.gl/sQKx4n3WctXuS5Bw8"
}

App return ​

  • bool: Can the map feature be enabled?

App return example ​

json
{
  "name": "launch_map",
  "data": true
}
phone_call

Web Call Example ​

json
{
  "name": "phone_call",
  "data": "02-1234-5678"
}

App return ​

  • bool: Can the phone feature be enabled?

App return example ​

json
{
  "name": "phone_call",
  "data": bool
}
1999agree

Web Call Example ​

json
{
  "name": "1999agree",
  "data": true
}

data must not be null. Its value does not change the behavior. The app always calls 1999.

App behavior ​

  1. If the user has not agreed to the phone call terms, the app opens the terms page first.
  2. After the user agrees, the app shows a "voice report" dialog. The call starts only when the user taps "call now".

App return ​

  • The app does not reply when the dialog is shown.
  • The app replies false when the device cannot make phone calls, or when the user does not agree to the terms.

App return example ​

json
{
  "name": "1999agree",
  "data": false
}
location

Web Call Example ​

json
{
  "name": "location",
  "data": null
}

App return ​

Position See details GeoLocator - Position
  • accuracy: Horizontal Accuracy (meters)
    double

  • altitude: Altitude (meters)
    double

  • altitude_accuracy: Altitude Accuracy (meters)
    double

  • floor: Floor
    int, nullable

  • heading: Heading While Moving
    double

  • heading_accuracy: Heading Accuracy While Moving (degrees)
    double

  • is_mocked: Is this simulated location data (Android API level 18 and later)
    bool

  • latitude: Latitude (-90.0 inclusive to +90.0 inclusive)
    double

  • longitude: Longitude (-180.0 exclusive to +180.0 inclusive)
    double

  • speed: Speed (meters/second)
    double

  • speed_accuracy: Speed Accuracy (meters/second)
    double

  • timestamp: Current Data Acquisition Time (ms)
    int

  • vertical_speed: Vertical speed (meters/second). Positive values mean ascending and negative values mean descending. The value is 0.0 when the device does not support it
    double

  • vertical_speed_accuracy: Vertical speed accuracy (meters/second). The value is 0.0 when the device does not support it
    double

  • has_accuracy, has_altitude, has_altitude_accuracy, has_heading, has_heading_accuracy, has_speed, has_speed_accuracy, has_vertical_speed, has_vertical_speed_accuracy: Whether the platform actually reported the matching field. When false, the matching field is a 0.0 placeholder, not a measurement
    bool

App return example ​

json
{
  "name": "location",
  "data": {
    "longitude": -121.406417,
    "latitude": 38.785834,
    "timestamp": 1724466344054,
    "accuracy": 5.0,
    "altitude": 0.0,
    "altitude_accuracy": 0.0,
    "floor": null,
    "heading": -1.0,
    "heading_accuracy": -1.0,
    "speed": 0.0,
    "speed_accuracy": 0.0,
    "is_mocked": true,
    "vertical_speed": 0.0,
    "vertical_speed_accuracy": 0.0,
    "has_accuracy": true,
    "has_altitude": true,
    "has_altitude_accuracy": true,
    "has_heading": false,
    "has_heading_accuracy": false,
    "has_speed": true,
    "has_speed_accuracy": true,
    "has_vertical_speed": false,
    "has_vertical_speed_accuracy": false
  }
}
deviceinfo

Web Call Example ​

json
{
  "name": "deviceinfo",
  "data": null
}

App return example ​

ios

For reference: UIDevice, utsname

json
{
  "systemName": "iOS",
  "isPhysicalDevice": false,
  "utsname": {
    "release": "23.6.0",
    "sysname": "Darwin",
    "nodename": "xxx-MBP",
    "machine": "iPhone16,1",
    "version": "Darwin Kernel Version xxx: ..."
  },
  "model": "iPhone",
  "localizedModel": "iPhone",
  "systemVersion": "17.x",
  "name": "iPhone xxx",
  "identifierForVendor": "xxx-xxx-xxxx-...",
  "modelName": "iPhone 15 Pro",
  "isiOSAppOnMac": false,
  "isiOSAppOnVision": false,
  "physicalRamSize": 8192,
  "availableRamSize": 2048,
  "freeDiskSize": 8593948672,
  "totalDiskSize": 10411143168
}
android

For reference: android.os.Build

json
{
  "product": "sdk_gphone64_arm64",
  "supportedAbis": [
    "arm64-v8a"
  ],
  "supported32BitAbis": [],
  "display": "AP31.xxxx.xxx",
  "type": "user",
  "isPhysicalDevice": false,
  "version": {
    "baseOS": "",
    "securityPatch": "2024-xx-xx",
    "sdkInt": 34,
    "release": "14",
    "codename": "VanillaIceCream",
    "previewSdkInt": 1,
    "incremental": "11566045"
  },
  "systemFeatures": [
    "android.hardware.sensor.proximity",
    "android.software.adoptable_storage",
    ...
  ],
  "manufacturer": "Google",
  "tags": "release-keys",
  "supported64BitAbis": [
    "arm64-v8a"
  ],
  "bootloader": "unknown",
  "fingerprint": "google/sdk_gphone64_arm64/...",
  "host": "x-xxx-...",
  "isLowRamDevice": false,
  "model": "sdk_gphone64_arm64",
  "id": "AP31.xxxx.xxx",
  "brand": "google",
  "device": "emu64a",
  "board": "goldfish_arm64",
  "hardware": "xxxxxx",
  "name": "xxx",
  "time": 1724466344000,
  "physicalRamSize": 3967,
  "availableRamSize": 1536,
  "freeDiskSize": 8593948672,
  "totalDiskSize": 10411143168
}
open_link

Web Call Example ​

json
{
  "name": "open_link",
  "data": "https://www.gov.taipei/"
}

App behavior ​

When data is a URL string, the app opens the URL in the built-in WebView.

App return ​

  • The app does not reply when the link opens.
  • The app replies false when data is null.

App return example ​

json
{
  "name": "open_link",
  "data": false
}
notify

Web Call Example ​

json
{
  "name": "notify",
  "data": {
    "title": "Subscription",
    "content": "已取消訂閱xxx"
  }
}

App behavior ​

  • The app sends a phone notification with title and content.
  • When content matches 已訂閱xxx ("subscribed to xxx"), the app adds xxx to the subscription list.
  • When content matches 已取消訂閱xxx ("unsubscribed from xxx"), the app removes xxx from the subscription list.

TIP

The app matches the Chinese text above. Content in other languages still shows a notification, but does not change the subscription list.

App return ​

  • The app does not reply when the notification is sent.
  • The app replies false when data is not an object.

App return example ​

json
{
  "name": "notify",
  "data": false
}
qr_code_scan

Web Call Example ​

json
{
  "name": "qr_code_scan",
  "data": null
}

App behavior ​

The app opens the QR code scan page. After a code is scanned or the user goes back, the app closes the scan page and replies with the result.

App return ​

  • string: The scanned content
  • null: The user went back without scanning

App return example ​

json
{
  "name": "qr_code_scan",
  "data": "https://www.gov.taipei/"
}