// Code generated by Lark OpenAPI.

package larkmdm

import (
	"context"
	"github.com/larksuite/oapi-sdk-go/v3/core"
	"net/http"
)

type V1 struct {
	UserAuthDataRelation *userAuthDataRelation // 数据维度
}

func New(config *larkcore.Config) *V1 {
	return &V1{
		UserAuthDataRelation: &userAuthDataRelation{config: config},
	}
}

type userAuthDataRelation struct {
	config *larkcore.Config
}

// Bind 用户数据维度绑定
//
// - 通过该接口，可为指定应用下的用户绑定一类数据维度，支持批量给多个用户同时增量授权。
//
// - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/mdm-v1/user_auth_data_relation/bind
//
// - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/mdmv1/bind_userAuthDataRelation.go
func (u *userAuthDataRelation) Bind(ctx context.Context, req *BindUserAuthDataRelationReq, options ...larkcore.RequestOptionFunc) (*BindUserAuthDataRelationResp, error) {
	// 发起请求
	apiReq := req.apiReq
	apiReq.ApiPath = "/open-apis/mdm/v1/user_auth_data_relations/bind"
	apiReq.HttpMethod = http.MethodPost
	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
	apiResp, err := larkcore.Request(ctx, apiReq, u.config, options...)
	if err != nil {
		return nil, err
	}
	// 反序列响应结果
	resp := &BindUserAuthDataRelationResp{ApiResp: apiResp}
	err = apiResp.JSONUnmarshalBody(resp, u.config)
	if err != nil {
		return nil, err
	}
	return resp, err
}

// Unbind 用户数据维度解绑
//
// - 通过该接口，可为指定应用下的指定用户解除一类数据维度。
//
// - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/mdm-v1/user_auth_data_relation/unbind
//
// - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/mdmv1/unbind_userAuthDataRelation.go
func (u *userAuthDataRelation) Unbind(ctx context.Context, req *UnbindUserAuthDataRelationReq, options ...larkcore.RequestOptionFunc) (*UnbindUserAuthDataRelationResp, error) {
	// 发起请求
	apiReq := req.apiReq
	apiReq.ApiPath = "/open-apis/mdm/v1/user_auth_data_relations/unbind"
	apiReq.HttpMethod = http.MethodPost
	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
	apiResp, err := larkcore.Request(ctx, apiReq, u.config, options...)
	if err != nil {
		return nil, err
	}
	// 反序列响应结果
	resp := &UnbindUserAuthDataRelationResp{ApiResp: apiResp}
	err = apiResp.JSONUnmarshalBody(resp, u.config)
	if err != nil {
		return nil, err
	}
	return resp, err
}
