import "../base.api"
import "./label_relationship.api"

type (
    // The response data of contact list | Contact列表数据
    ContactListResp {
        BaseDataInfo

        // Contact list data | Contact列表数据
        Data ContactListInfo `json:"data"`
    }

    // Contact list data | Contact列表数据
    ContactListInfo {
        BaseListInfo

        // The API list data | Contact列表数据
        Data  []ContactInfo  `json:"data"`
    }

    // Get contact list request params | Contact列表请求参数
    ContactListReq {
        PageInfo

        // Label ID list | 标签ID列表
        LabelIDs []uint64 `json:"labelIDs,optional"`

        // 属主微信id
        WxWxid  *string `json:"wxWxid,optional"`

        // 微信id 公众号微信ID 
        Wxid  *string `json:"wxid,optional"`

        // 微信账号 
        Account  *string `json:"account,optional"`

        // 昵称
        Nickname  *string `json:"nickname,optional"`

        // 联系人类型:1好友,2群组,3公众号,4企业微信联系人
        Type  *int `json:"type,optional"`

		// 内容类型:1-个微 3-企微
		Ctype *uint64 `json:"ctype,optional"`
    }

    // Contact information response | Contact信息返回体
    ContactInfoResp {
        BaseDataInfo

        // Contact information | Contact数据
        Data ContactInfo `json:"data"`
    }

    AddNewFriendReq {
        OwnerWxid string `json:"ownerWxid"`
        Wxid string `json:"wxid"`
        Gid string `json:"gid"`
        Desc string `json:"desc"`
        AddType string `json:"addType"`
    }

    changeBlockListReq {
        OwnerWxid string `json:"ownerWxid"`
        Wxid string `json:"wxid"`
        Type  *int `json:"type,optional"`
        Ai *bool `json:"ai,optional"`
    }

	ImportWhatsappContactReq {
		File *string `form:"file,optional"`
	}
	WhatsappContactListReq {
		PageInfo

		// 标签ID列表
		LabelIDs []uint64 `json:"labelIDs,optional"`

		// 电话
		Phone  *string `json:"phone,optional"`

		// 名称
		Name  *string `json:"name,optional"`
	}
	CreateWhatsappContactReq {
		BaseIDInfo

		// 国家区号
		Cc  *string `json:"cc"`
		Phone *string `json:"phone"`

		// 备注名
		Markname  *string `json:"markname,optional"`

		Ctype *uint64 `json:"ctype,optional"`
		Cname *string `json:"cname,optional"`
		Sex *int `json:"sex,optional"`
		Cage *int `json:"cage,optional"`
		Carea *string `json:"carea,optional"`
		Cbirthday *string `json:"cbirthday,optional"`
		Cbirtharea *string `json:"cbirtharea,optional"`
		CidcardNo *string `json:"cidcardNo,optional"`
		Ctitle *string `json:"ctitle,optional"`
	}
)

@server(
    jwt: Auth
    group: contact
    middleware: Authority
)

service Wechat {
    // Create contact information | 创建Contact
    @handler createContact
    post /contact/create (ContactInfo) returns (BaseMsgResp)

    // Update contact information | 更新Contact
    @handler updateContact
    post /contact/update (ContactInfo) returns (BaseMsgResp)

    // Delete contact information | 删除Contact信息
    @handler deleteContact
    post /contact/delete (IDsReq) returns (BaseMsgResp)

    // Get contact list | 获取Contact列表
    @handler getContactList
    post /contact/list (ContactListReq) returns (ContactListResp)

    // Get contact by ID | 通过ID获取Contact
    @handler getContactById
    post /contact (IDReq) returns (ContactInfoResp)

    @handler addNewFriend
    post /contact/addNewFriend (AddNewFriendReq) returns (BaseMsgResp)

    @handler changeBlockList
    post /contact/changeBlockList (changeBlockListReq) returns (BaseMsgResp)

	// 导入Whatsapp联系人
	@handler importWhatsappContact
	post /contact/importWhatsappContact (ImportWhatsappContactReq) returns (BaseDataInfo)

	// Whatsapp联系人列表
	@handler getWhatsappContactList
	post /contact/getWhatsappContactList (WhatsappContactListReq) returns (ContactListResp)

	// Whatsapp联系人创建
	@handler createWhatsappContact
	post /contact/createWhatsappContact (CreateWhatsappContactReq) returns (BaseMsgResp)

	// Whatsapp联系人编辑
	@handler updateWhatsappContact
	post /contact/updateWhatsappContact (CreateWhatsappContactReq) returns (BaseMsgResp)

	// Whatsapp联系人删除
	@handler deleteWhatsappContact
	post /contact/deleteWhatsappContact (IDsReq) returns (BaseMsgResp)

	// Whatsapp联系人详情
	@handler getWhatsappContact
	post /contact/getWhatsappContact (IDReq) returns (ContactInfoResp)
}