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 }