Skip to content

v0.0.56

pan-console-proto

pan/console/v1/account/command.proto

AddPhoneAnswer

AddPhonePayload

FieldTypeLabelDescription
admin_tokenstring
phone_idstring要添加phone的phone_id
phonestring若為第一個添加的phone,則該帳號將轉為實體帳號

DeletePhoneAnswer

DeletePhonePayload

FieldTypeLabelDescription
admin_tokenstring
phone_idstring要移除phone的phone_id
phonestring若為最後一個移除的phone,則該帳號將轉為虛擬帳號

RemoveMemberAnswer

RemoveMemberPayload

FieldTypeLabelDescription
admin_tokenstring
object_idstring要移除的子帳號的object_id
new_main_uidint64要指定為新的主帳號的uid

SwitchMainMemberAnswer

SwitchMainMemberPayload

FieldTypeLabelDescription
admin_tokenstring必填。
phone_idstring必填。要更改主帳號的帳戶phone_id
uidint64必填。要變更為主帳號的uid

UpdatePhoneAnswer

UpdatePhonePayload

FieldTypeLabelDescription
admin_tokenstring
phone_idstring
phonestring

Command

Method NameRequest TypeResponse TypeDescription
RemoveMemberRemoveMemberPayloadRemoveMemberAnswer從某帳戶下移除指定的子帳號,如果移除的是主帳號且還有其他子帳號、則需要同時指定新的主帳號。 如果移除的是帳戶下最後一個子帳號,會變成虛擬帳戶。 若原先帳戶下有手機曾在APEA驗證過,會同步刪除該會員和驗證狀態的關聯。 該被移除會員會被轉至一個新的虛擬帳戶下,同時將該會員設為主帳號。 若成功會發送PhoneIdUpdated Pub/Sub event
UpdatePhoneUpdatePhonePayloadUpdatePhoneAnswerdeprecated
AddPhoneAddPhonePayloadAddPhoneAnswer在某帳戶下追加手機號碼,若成功會發送PhoneUpdated Pub/Sub event
DeletePhoneDeletePhonePayloadDeletePhoneAnswer從某帳戶移除指定手機號碼 如果移除的是最後一隻電話會轉為虛擬帳戶。 如果移除的是默認手機且還有其他手機、會自動將剩下的電話中最早綁定的設為默認手機。 如果移除的電話曾在APEA驗證過,會同步移除該帳戶的phone_id在APEA的關聯紀錄。 若成功會發送PhoneUpdated Pub/Sub event
SwitchMainMemberSwitchMainMemberPayloadSwitchMainMemberAnswer將指定的子帳號改為主帳號

pan/console/v1/account/query.proto

GenerateFoundTokenAnswer

FieldTypeLabelDescription
found_tokenstring

GenerateFoundTokenPayload

FieldTypeLabelDescription
admin_tokenstring
phone_idstring要查詢的phone_id (JPASS ID,絕對比對)
phonestring要查詢的電話號碼(模糊比對)
object_idstring要查詢的帳戶所關聯的某帳號的object_id(絕對比對)
uidint64要查詢的帳戶所關聯的某帳號的uid(絕對比對)

GetAccountListAnswer

FieldTypeLabelDescription
recordsGetAccountListAnswer.Recordrepeated

GetAccountListAnswer.Record

FieldTypeLabelDescription
is_virtualbool是否為虛擬帳戶
member_countint64帳戶所對應的帳號數量
phone_idstring該帳戶的phone_id (JPASS ID)
phone_countint64該帳戶持有的電話數量

GetAccountListPayload

FieldTypeLabelDescription
admin_tokenstring
found_tokenstring

PhoneNumberListAnswer

FieldTypeLabelDescription
recordsPhoneNumberListAnswer.Recordrepeated

PhoneNumberListAnswer.Record

FieldTypeLabelDescription
phonestring電話號碼
phone_orderint64電話升序編號,從1起算
created_atgoogle.protobuf.Timestamp電話綁定時間

PhoneNumberListPayload

FieldTypeLabelDescription
admin_tokenstring
phone_idstringJPASS ID

Query

Method NameRequest TypeResponse TypeDescription
GenerateFoundTokenGenerateFoundTokenPayloadGenerateFoundTokenAnswer生成查詢帳戶的token
GetAccountListGetAccountListPayloadGetAccountListAnswer根據found token查詢符合條件的account
PhoneNumberListPhoneNumberListPayloadPhoneNumberListAnswer根據指定的phone_id (JPASS ID)查詢該帳戶所持有的全部手機號碼。 如果操作者沒有電話閱覽權限、僅會顯示手機後3碼。

pan/console/v1/base/error.proto

Error

Error.Value

NameNumberDescription
None0
AdminTokenInvalid1503admin token無效
FailedToIdentifyIP1601無法識別用戶IP
FailedToPublishEvent1602發送Pub/Sub event失敗
MemberNotFound1603查詢member資料失敗
AccountNotFound1604查詢account資料失敗(可能是從論壇來的、沒有電話的帳號)
PhoneDuplicated1605電話號碼已被使用
PhoneFormatIncorrect1606電話號碼格式有錯誤
PhoneNotExist1607電話號碼不存在
UsernameDuplicated1608username已被使用
DisplayNameDuplicated1609display_name已被使用
UsernameAlreadySet1610用戶名稱已設定

pan/console/v1/base/general.proto

TernaryCondition

NameNumberDescription
All0不限
True1正向
False2負向

pan/console/v1/health.proto

HealthCheckRequest

FieldTypeLabelDescription
servicestring

HealthCheckResponse

FieldTypeLabelDescription
statusHealthCheckResponse.ServingStatus

HealthCheckResponse.ServingStatus

NameNumberDescription
SERVING_STATUS_UNSPECIFIED0
SERVING_STATUS_SERVING1
SERVING_STATUS_NOT_SERVING2
SERVING_STATUS_SERVICE_UNKNOWN3Used only by the Watch method.

HealthService

Method NameRequest TypeResponse TypeDescription
CheckHealthCheckRequestHealthCheckResponse
WatchHealthCheckRequestHealthCheckResponse stream

pan/console/v1/member/command.proto

CommandError

CreateAccountAnswer

FieldTypeLabelDescription
phone_idstring新創建帳戶的 phone_id (JPASS ID)
object_idstring新創建帳號的 object_id
uidint64新創建帳號的 uid

CreateAccountPayload

FieldTypeLabelDescription
admin_tokenstring
usernamestring用戶名稱
display_namestring用戶暱稱
passwordstring帳號密碼
phonestring手機號碼,optional,若為空則是虛擬帳號
emailstring信箱,optional,若有值會自動標記為已驗證信箱

CreateNewMemberAnswer

FieldTypeLabelDescription
uidint64新增的子帳號的 uid
object_idstring新增的子帳號的 object_id

CreateNewMemberPayload

FieldTypeLabelDescription
admin_tokenstring必填。
phone_idstring必填。要新增子帳號的帳戶的 phone_id
usernamestring必填。
display_namestring必填。
passwordstring必填。
emailstring選填。

CreateVirtualPhoneMemberPayload

FieldTypeLabelDescription
console_tokenstring
display_namestring
passwordstringoptional

CreateVirtualPhoneMemberStatus

CreateVirtualPhoneMemberStatus.Error

DeletePasswordAnswer

DeletePasswordPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64要刪除密碼的帳號 uid

DeleteSecurityQuestionAnswer

DeleteSecurityQuestionPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64要刪除安全提問的 uid

RemoveAvatarAnswer

RemoveAvatarPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64要移除大頭貼的帳號 uid

UpdateDisplayNameAnswer

UpdateDisplayNamePayload

FieldTypeLabelDescription
admin_tokenstring
object_idstring指定帳號的 object_id
display_namestring新的暱稱

UpdateEmailAnswer

UpdateEmailAnswer.Error

UpdateEmailPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64
emailstring

UpdatePasswordAnswer

UpdatePasswordPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64要更新密碼的帳號 uid
passwordstring新密碼

UpdateUsernameAnswer

UpdateUsernamePayload

FieldTypeLabelDescription
admin_tokenstring
uidint64要更新用戶名稱的帳號 uid
usernamestring新用戶名稱

CommandError.Code

NameNumberDescription
None0
EmailDuplicated2001
PasswordInvalid2002

CreateVirtualPhoneMemberStatus.Error.Code

NameNumberDescription
None0
Failed1001

UpdateEmailAnswer.Error.Value

NameNumberDescription
None0
EmailDuplicated1001信箱已被使用

Command

Method NameRequest TypeResponse TypeDescription
CreateVirtualPhoneMemberCreateVirtualPhoneMemberPayloadCreateVirtualPhoneMemberStatusdeprecated - 目前僅dev測試用途
CreateAccountCreateAccountPayloadCreateAccountAnswer創建帳戶 會用指定的username同步在論壇創建帳號 若成功會發送RegisterDone Pub/Sub event
UpdateDisplayNameUpdateDisplayNamePayloadUpdateDisplayNameAnswer更新指定帳號的暱稱 若成功會發送DisplayNameUpdated Pub/Sub event
DeletePasswordDeletePasswordPayloadDeletePasswordAnswer刪除指定帳號的密碼 若成功會發送PasswordUpdated Pub/Sub event
DeleteSecurityQuestionDeleteSecurityQuestionPayloadDeleteSecurityQuestionAnswer刪除指定帳號的安全提問 若成功會發送SecurityQuestionUpdated Pub/Sub event
UpdateUsernameUpdateUsernamePayloadUpdateUsernameAnswer更新指定帳號的用戶名稱 若目前已有用戶名稱,則會阻擋 若成功會發送UsernameUpdated Pub/Sub event
UpdatePasswordUpdatePasswordPayloadUpdatePasswordAnswer更新指定帳號的密碼 會將新密碼同步到論壇 若成功會發送PasswordUpdated Pub/Sub event
UpdateEmailUpdateEmailPayloadUpdateEmailAnswer更新指定帳號的信箱 若成功會發送PasswordUpdated Pub/Sub event 若payload email為空,則會移除指定帳號的email 若成功會發送EmailUpdated和EmailVerifiedUpdated Pub/Sub event
RemoveAvatarRemoveAvatarPayloadRemoveAvatarAnswer移除指定帳號的大頭貼 會移除該帳號在pan以及論壇存儲的大頭貼
CreateNewMemberCreateNewMemberPayloadCreateNewMemberAnswer

pan/console/v1/member/query.proto

GenerateFoundTokenAnswer

FieldTypeLabelDescription
found_tokenstring

GenerateFoundTokenPayload

FieldTypeLabelDescription
admin_tokenstring
phonestring查詢的電話號碼(模糊比對)
phone_idstring查詢的phone_id (JPASS ID,絕對比對)
uidint64查詢的uid (絕對比對)
hashed_uidstring查詢的hashed uid (huid,絕對比對)
object_idstring查詢的object_id(絕對比對)
usernamestring查詢的username (不分大小寫模糊比對)
display_namestring查詢display_name (不分大小寫模糊比對)
emailstring查詢的email (不分大小寫模糊比對)
email_verifiedpan.console.v1.base.TernaryCondition是否要鎖定「信箱是否已驗證」的狀態(若為All則不限)
has_passwordpan.console.v1.base.TernaryCondition是否要鎖定「有無設定密碼」的狀態(若為All則不限)
has_second_passcodepan.console.v1.base.TernaryCondition是否要鎖定「有無設定安全提問」的狀態(若為All則不限)
is_virtual_accountpan.console.v1.base.TernaryCondition是否要鎖定「是否為虛擬帳號」的狀態(若為All則不限)
limitint64單次查詢返回筆數上限

GetMemberDetailAnswer

FieldTypeLabelDescription
phone_idstring該帳號所屬帳戶的phone_id (JPASS ID)
uidint64該帳號的uid
object_idstring該帳號的object_id
hashed_uidstring該帳號的hashed uid
usernamestring該帳號的用戶名稱
display_namestring該帳號的暱稱
avatarstring該帳號的大頭貼URL路徑
emailstring該帳號的信箱
phonestringdeprecated
email_verifiedbool該帳號的信箱是否已驗證
has_passwordbool該帳號是否有設定密碼
has_second_passcodebool該帳號是否有設定安全提問
twid_statusbool該帳號是否有經APEA通過TWID驗證
is_main_memberbool該帳號是否為帳戶下的主帳號
phonesstringrepeated該帳號所屬帳戶持有的所有電話號碼,若當前操作者沒有電話閱覽權限、則僅顯示電話後3碼

GetMemberDetailPayload

FieldTypeLabelDescription
admin_tokenstring
uidint64指定帳號的uid

GetMemberListAnswer

FieldTypeLabelDescription
recordsGetMemberListAnswer.Recordrepeated

GetMemberListAnswer.Record

FieldTypeLabelDescription
uidint64符合條件帳號的uid
usernamestring符合條件帳號的用戶名稱
display_namestring符合條件帳號的暱稱
is_main_memberbool是否為主帳號

GetMemberListPayload

FieldTypeLabelDescription
admin_tokenstring
found_tokenstring

Query

Method NameRequest TypeResponse TypeDescription
GenerateFoundTokenGenerateFoundTokenPayloadGenerateFoundTokenAnswer生成查詢帳號的token 不可同時指定uid和hashed_uid 查詢條件不可為空 建議單次查詢筆數上限為500 (可透過limit設定)
GetMemberListGetMemberListPayloadGetMemberListAnswer根據found token查詢符合條件的帳號
GetMemberDetailGetMemberDetailPayloadGetMemberDetailAnswer查詢指定帳號的詳細資訊

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)