github.com/qiniu/go-sdk/v7@v7.27.0/audit/apis/query_log/api.go (about)

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 审计日志查询
     4  package query_log
     5  
     6  import (
     7  	"encoding/json"
     8  
     9  	credentials "github.com/qiniu/go-sdk/v7/storagev2/credentials"
    10  	errors "github.com/qiniu/go-sdk/v7/storagev2/errors"
    11  )
    12  
    13  // 调用 API 所用的请求
    14  type Request struct {
    15  	StartTime   string                          // 检索日志的开始时间,日期格式按照 ISO8601 标准,并使用 UTC 时间
    16  	EndTime     string                          // 检索日志的结束时间,日期格式按照 ISO8601 标准,并使用 UTC 时间
    17  	ServiceName string                          // 服务名称,参考 https://developer.qiniu.com/af/12434/audit-log-events
    18  	EventNames  []string                        // 事件名称集合,参考 https://developer.qiniu.com/af/12434/audit-log-events
    19  	PrincipalId string                          // 请求者的 ID,参考 https://developer.qiniu.com/af/manual/12433/audit-log-object
    20  	AccessKeyId string                          // 请求身份所属的 AccessKey ID
    21  	Limit       int64                           // 允许返回的最大结果数目,取值范围:1~50,不传值默认为:20
    22  	NextMark    string                          // 用于请求下一页检索的结果
    23  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    24  }
    25  
    26  // 获取 API 所用的响应
    27  type Response struct {
    28  	NextMark      string   // 用于请求下一页检索的结果
    29  	AuditLogInfos LogInfos // 日志集合
    30  }
    31  
    32  // 请求者的身份信息
    33  type UserIdentity struct {
    34  	AccountId     string // 当前请求所属的七牛云账号 ID
    35  	PrincipalId   string // 当前请求者的 ID,需结合 principal_type 来确认请求者身份
    36  	PrincipalType string // 请求者身份类型,仅支持 UNKNOWN 表示未知,ROOT_USER 表示七牛云账户 ID,IAM_USER 表示 IAM 子账户 ID,QINIU_ACCOUNT 表示当七牛云账号跨账号操作时,记录七牛云账号 ID
    37  	AccessKeyId   string // 当前请求身份所属的 AccessKey ID
    38  }
    39  
    40  // 返回的请求者的身份信息
    41  type (
    42  	UserIdentify     = UserIdentity
    43  	jsonUserIdentity struct {
    44  		AccountId     string `json:"account_id"`     // 当前请求所属的七牛云账号 ID
    45  		PrincipalId   string `json:"principal_id"`   // 当前请求者的 ID,需结合 principal_type 来确认请求者身份
    46  		PrincipalType string `json:"principal_type"` // 请求者身份类型,仅支持 UNKNOWN 表示未知,ROOT_USER 表示七牛云账户 ID,IAM_USER 表示 IAM 子账户 ID,QINIU_ACCOUNT 表示当七牛云账号跨账号操作时,记录七牛云账号 ID
    47  		AccessKeyId   string `json:"access_key_id"`  // 当前请求身份所属的 AccessKey ID
    48  	}
    49  )
    50  
    51  func (j *UserIdentity) MarshalJSON() ([]byte, error) {
    52  	if err := j.validate(); err != nil {
    53  		return nil, err
    54  	}
    55  	return json.Marshal(&jsonUserIdentity{AccountId: j.AccountId, PrincipalId: j.PrincipalId, PrincipalType: j.PrincipalType, AccessKeyId: j.AccessKeyId})
    56  }
    57  
    58  func (j *UserIdentity) UnmarshalJSON(data []byte) error {
    59  	var nj jsonUserIdentity
    60  	if err := json.Unmarshal(data, &nj); err != nil {
    61  		return err
    62  	}
    63  	j.AccountId = nj.AccountId
    64  	j.PrincipalId = nj.PrincipalId
    65  	j.PrincipalType = nj.PrincipalType
    66  	j.AccessKeyId = nj.AccessKeyId
    67  	return nil
    68  }
    69  
    70  func (j *UserIdentity) validate() error {
    71  	if j.AccountId == "" {
    72  		return errors.MissingRequiredFieldError{Name: "AccountId"}
    73  	}
    74  	if j.PrincipalId == "" {
    75  		return errors.MissingRequiredFieldError{Name: "PrincipalId"}
    76  	}
    77  	if j.PrincipalType == "" {
    78  		return errors.MissingRequiredFieldError{Name: "PrincipalType"}
    79  	}
    80  	if j.AccessKeyId == "" {
    81  		return errors.MissingRequiredFieldError{Name: "AccessKeyId"}
    82  	}
    83  	return nil
    84  }
    85  
    86  // 返回的操作的资源名称列表
    87  type ResourceNames = []string
    88  
    89  // 返回的审计日志
    90  type LogInfo struct {
    91  	EventId             string        // 日志 ID
    92  	EventType           string        // 事件类型,仅支持 UNKNOWN 表示未知,CONSOLE 表示控制台事件,API 表示 API 事件
    93  	EventTime           string        // 事件发生时间(UTC 格式)
    94  	UserIdentity        UserIdentify  // 请求者的身份信息
    95  	EventRw             string        // 读写类型,仅支持 UNKNOWN 表示未知,READ 表示读,WRITE 表示写
    96  	ServiceName         string        // 服务名称
    97  	EventName           string        // 事件名称
    98  	SourceIp            string        // 源 IP 地址
    99  	UserAgent           string        // 客户端代理
   100  	ResourceNames       ResourceNames // 操作的资源名称列表
   101  	RequestId           string        // 请求 ID
   102  	RequestUrl          string        // 请求 URL
   103  	RequestParams       string        // 请求的输入参数
   104  	ResponseData        string        // 请求的返回数据
   105  	ResponseCode        int64         // 请求的返回码
   106  	ResponseMessage     string        // 请求的返回信息
   107  	AdditionalEventData string        // 额外备注信息
   108  }
   109  type jsonLogInfo struct {
   110  	EventId             string        `json:"event_id"`              // 日志 ID
   111  	EventType           string        `json:"event_type"`            // 事件类型,仅支持 UNKNOWN 表示未知,CONSOLE 表示控制台事件,API 表示 API 事件
   112  	EventTime           string        `json:"event_time"`            // 事件发生时间(UTC 格式)
   113  	UserIdentity        UserIdentify  `json:"user_identity"`         // 请求者的身份信息
   114  	EventRw             string        `json:"event_rw"`              // 读写类型,仅支持 UNKNOWN 表示未知,READ 表示读,WRITE 表示写
   115  	ServiceName         string        `json:"service_name"`          // 服务名称
   116  	EventName           string        `json:"event_name"`            // 事件名称
   117  	SourceIp            string        `json:"source_ip"`             // 源 IP 地址
   118  	UserAgent           string        `json:"user_agent"`            // 客户端代理
   119  	ResourceNames       ResourceNames `json:"resource_names"`        // 操作的资源名称列表
   120  	RequestId           string        `json:"request_id"`            // 请求 ID
   121  	RequestUrl          string        `json:"request_url"`           // 请求 URL
   122  	RequestParams       string        `json:"request_params"`        // 请求的输入参数
   123  	ResponseData        string        `json:"response_data"`         // 请求的返回数据
   124  	ResponseCode        int64         `json:"response_code"`         // 请求的返回码
   125  	ResponseMessage     string        `json:"response_message"`      // 请求的返回信息
   126  	AdditionalEventData string        `json:"additional_event_data"` // 额外备注信息
   127  }
   128  
   129  func (j *LogInfo) MarshalJSON() ([]byte, error) {
   130  	if err := j.validate(); err != nil {
   131  		return nil, err
   132  	}
   133  	return json.Marshal(&jsonLogInfo{EventId: j.EventId, EventType: j.EventType, EventTime: j.EventTime, UserIdentity: j.UserIdentity, EventRw: j.EventRw, ServiceName: j.ServiceName, EventName: j.EventName, SourceIp: j.SourceIp, UserAgent: j.UserAgent, ResourceNames: j.ResourceNames, RequestId: j.RequestId, RequestUrl: j.RequestUrl, RequestParams: j.RequestParams, ResponseData: j.ResponseData, ResponseCode: j.ResponseCode, ResponseMessage: j.ResponseMessage, AdditionalEventData: j.AdditionalEventData})
   134  }
   135  
   136  func (j *LogInfo) UnmarshalJSON(data []byte) error {
   137  	var nj jsonLogInfo
   138  	if err := json.Unmarshal(data, &nj); err != nil {
   139  		return err
   140  	}
   141  	j.EventId = nj.EventId
   142  	j.EventType = nj.EventType
   143  	j.EventTime = nj.EventTime
   144  	j.UserIdentity = nj.UserIdentity
   145  	j.EventRw = nj.EventRw
   146  	j.ServiceName = nj.ServiceName
   147  	j.EventName = nj.EventName
   148  	j.SourceIp = nj.SourceIp
   149  	j.UserAgent = nj.UserAgent
   150  	j.ResourceNames = nj.ResourceNames
   151  	j.RequestId = nj.RequestId
   152  	j.RequestUrl = nj.RequestUrl
   153  	j.RequestParams = nj.RequestParams
   154  	j.ResponseData = nj.ResponseData
   155  	j.ResponseCode = nj.ResponseCode
   156  	j.ResponseMessage = nj.ResponseMessage
   157  	j.AdditionalEventData = nj.AdditionalEventData
   158  	return nil
   159  }
   160  
   161  func (j *LogInfo) validate() error {
   162  	if j.EventId == "" {
   163  		return errors.MissingRequiredFieldError{Name: "EventId"}
   164  	}
   165  	if j.EventType == "" {
   166  		return errors.MissingRequiredFieldError{Name: "EventType"}
   167  	}
   168  	if j.EventTime == "" {
   169  		return errors.MissingRequiredFieldError{Name: "EventTime"}
   170  	}
   171  	if err := j.UserIdentity.validate(); err != nil {
   172  		return err
   173  	}
   174  	if j.EventRw == "" {
   175  		return errors.MissingRequiredFieldError{Name: "EventRw"}
   176  	}
   177  	if j.ServiceName == "" {
   178  		return errors.MissingRequiredFieldError{Name: "ServiceName"}
   179  	}
   180  	if j.EventName == "" {
   181  		return errors.MissingRequiredFieldError{Name: "EventName"}
   182  	}
   183  	if j.SourceIp == "" {
   184  		return errors.MissingRequiredFieldError{Name: "SourceIp"}
   185  	}
   186  	if j.UserAgent == "" {
   187  		return errors.MissingRequiredFieldError{Name: "UserAgent"}
   188  	}
   189  	if len(j.ResourceNames) == 0 {
   190  		return errors.MissingRequiredFieldError{Name: "ResourceNames"}
   191  	}
   192  	if j.RequestId == "" {
   193  		return errors.MissingRequiredFieldError{Name: "RequestId"}
   194  	}
   195  	if j.RequestUrl == "" {
   196  		return errors.MissingRequiredFieldError{Name: "RequestUrl"}
   197  	}
   198  	if j.RequestParams == "" {
   199  		return errors.MissingRequiredFieldError{Name: "RequestParams"}
   200  	}
   201  	if j.ResponseData == "" {
   202  		return errors.MissingRequiredFieldError{Name: "ResponseData"}
   203  	}
   204  	if j.ResponseCode == 0 {
   205  		return errors.MissingRequiredFieldError{Name: "ResponseCode"}
   206  	}
   207  	if j.ResponseMessage == "" {
   208  		return errors.MissingRequiredFieldError{Name: "ResponseMessage"}
   209  	}
   210  	if j.AdditionalEventData == "" {
   211  		return errors.MissingRequiredFieldError{Name: "AdditionalEventData"}
   212  	}
   213  	return nil
   214  }
   215  
   216  // 返回的审计日志列表
   217  type (
   218  	LogInfos     = []LogInfo
   219  	QueryLogResp = Response
   220  	jsonResponse struct {
   221  		NextMark      string   `json:"next_mark,omitempty"` // 用于请求下一页检索的结果
   222  		AuditLogInfos LogInfos `json:"audit_log_infos"`     // 日志集合
   223  	}
   224  )
   225  
   226  func (j *Response) MarshalJSON() ([]byte, error) {
   227  	if err := j.validate(); err != nil {
   228  		return nil, err
   229  	}
   230  	return json.Marshal(&jsonResponse{NextMark: j.NextMark, AuditLogInfos: j.AuditLogInfos})
   231  }
   232  
   233  func (j *Response) UnmarshalJSON(data []byte) error {
   234  	var nj jsonResponse
   235  	if err := json.Unmarshal(data, &nj); err != nil {
   236  		return err
   237  	}
   238  	j.NextMark = nj.NextMark
   239  	j.AuditLogInfos = nj.AuditLogInfos
   240  	return nil
   241  }
   242  
   243  func (j *Response) validate() error {
   244  	if len(j.AuditLogInfos) == 0 {
   245  		return errors.MissingRequiredFieldError{Name: "AuditLogInfos"}
   246  	}
   247  	for _, value := range j.AuditLogInfos {
   248  		if err := value.validate(); err != nil {
   249  			return err
   250  		}
   251  	}
   252  	return nil
   253  }