github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/api/Create.go (about) 1 package api 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 ) 8 9 type CreateOpts struct { 10 GatewayID string `json:"-"` 11 GroupID string `json:"group_id" required:"true"` 12 Name string `json:"name" required:"true"` 13 Type int `json:"type" required:"true"` 14 Version string `json:"version,omitempty"` 15 ReqProtocol string `json:"req_protocol" required:"true"` 16 ReqMethod string `json:"req_method" required:"true"` 17 ReqUri string `json:"req_uri" required:"true"` 18 AuthType string `json:"auth_type" required:"true"` 19 AuthOpt *AuthOpt `json:"auth_opt,omitempty"` 20 Cors bool `json:"cors,omitempty"` 21 MatchMode string `json:"match_mode,omitempty"` 22 BackendType string `json:"backend_type" required:"true"` 23 Description string `json:"remark,omitempty"` 24 BodyDescription string `json:"body_remark,omitempty"` 25 ResultNormalSample string `json:"result_normal_sample,omitempty"` 26 ResultFailureSample string `json:"result_failure_sample,omitempty"` 27 AuthorizerID string `json:"authorizer_id,omitempty"` 28 Tags []string `json:"tags,omitempty"` 29 RomaAppId string `json:"roma_app_id,omitempty"` 30 DomainName string `json:"domain_name,omitempty"` 31 ResponseID string `json:"response_id,omitempty"` 32 ContentType string `json:"content_type,omitempty"` 33 MockInfo *MockInfo `json:"mock_info,omitempty"` 34 FuncInfo *FuncInfo `json:"func_info,omitempty"` 35 ReqParams []ReqParams `json:"req_params,omitempty"` 36 BackendParams []BackendParams `json:"backend_params,omitempty"` 37 PolicyMocks []PolicyMocks `json:"policy_mocks,omitempty"` 38 PolicyFunctions []PolicyFunctions `json:"policy_functions,omitempty"` 39 BackendApi *BackendApi `json:"backend_api,omitempty"` 40 PolicyHttps []PolicyHttps `json:"policy_https,omitempty"` 41 } 42 43 type AuthOpt struct { 44 AppCodeAuthType string `json:"app_code_auth_type" required:"true"` 45 } 46 47 type MockInfo struct { 48 Description string `json:"remark,omitempty"` 49 Response string `json:"result_content,omitempty"` 50 Version string `json:"version,omitempty"` 51 AuthorizerID string `json:"authorizer_id,omitempty"` 52 } 53 54 type FuncInfo struct { 55 FunctionUrn string `json:"function_urn" required:"true"` 56 Description string `json:"remark,omitempty"` 57 InvocationType string `json:"invocation_type" required:"true"` 58 NetworkType string `json:"network_type" required:"true"` 59 Version string `json:"version,omitempty"` 60 AliasUrn string `json:"alias_urn,omitempty"` 61 Timeout int `json:"timeout" required:"true"` 62 AuthorizerID string `json:"authorizer_id,omitempty"` 63 } 64 65 type ReqParams struct { 66 Name string `json:"name" required:"true"` 67 Type string `json:"type" required:"true"` 68 Location string `json:"location" required:"true"` 69 DefaultValue string `json:"default_value,omitempty"` 70 SampleValue string `json:"sample_value,omitempty"` 71 Required *int `json:"required,omitempty"` 72 ValidEnable *int `json:"valid_enable,omitempty"` 73 Description string `json:"remark,omitempty"` 74 Enumerations string `json:"enumerations,omitempty"` 75 MinNum *int `json:"min_num,omitempty"` 76 MaxNum *int `json:"max_num,omitempty"` 77 MinSize *int `json:"min_size,omitempty"` 78 MaxSize *int `json:"max_size,omitempty"` 79 PassThrough *int `json:"pass_through,omitempty"` 80 Regular string `json:"regular,omitempty"` 81 JsonSchema string `json:"json_schema,omitempty"` 82 } 83 84 type PolicyMocks struct { 85 Response string `json:"result_content,omitempty"` 86 EffectMode string `json:"effect_mode" required:"true"` 87 Name string `json:"name" required:"true"` 88 BackendParams []BackendParams `json:"backend_params,omitempty"` 89 Conditions []Conditions `json:"conditions" required:"true"` 90 AuthorizerID string `json:"authorizer_id,omitempty"` 91 } 92 93 type BackendParams struct { 94 Origin string `json:"origin" required:"true"` 95 Name string `json:"name" required:"true"` 96 Description string `json:"remark,omitempty"` 97 Location string `json:"location" required:"true"` 98 Value string `json:"value" required:"true"` 99 } 100 101 type Conditions struct { 102 ReqParamName string `json:"req_param_name,omitempty"` 103 ConditionType string `json:"condition_type,omitempty"` 104 ConditionOrigin string `json:"condition_origin" required:"true"` 105 ConditionValue string `json:"condition_value" required:"true"` 106 } 107 108 type PolicyFunctions struct { 109 FunctionUrn string `json:"function_urn" required:"true"` 110 InvocationType string `json:"invocation_type" required:"true"` 111 NetworkType string `json:"network_type" required:"true"` 112 Version string `json:"version,omitempty"` 113 AliasUrn string `json:"alias_urn,omitempty"` 114 Timeout int `json:"timeout,omitempty"` 115 EffectMode string `json:"effect_mode" required:"true"` 116 Name string `json:"name" required:"true"` 117 BackendParams []BackendParams `json:"backend_params,omitempty"` 118 Conditions []Conditions `json:"conditions" required:"true"` 119 AuthorizerID string `json:"authorizer_id,omitempty"` 120 } 121 122 type BackendApi struct { 123 AuthorizerID string `json:"authorizer_id,omitempty"` 124 UrlDomain string `json:"url_domain,omitempty"` 125 ReqProtocol string `json:"req_protocol" required:"true"` 126 Description string `json:"remark,omitempty"` 127 ReqMethod string `json:"req_method" required:"true"` 128 Version string `json:"version,omitempty"` 129 ReqUri string `json:"req_uri" required:"true"` 130 Timeout int `json:"timeout" required:"true"` 131 EnableClientSSL *bool `json:"enable_client_ssl,omitempty"` 132 RetryCount string `json:"retry_count,omitempty"` 133 VpcChannelInfo *VpcChannelInfo `json:"vpc_channel_info,omitempty"` 134 VpcChannelStatus *int `json:"vpc_channel_status,omitempty"` 135 } 136 137 type VpcChannelInfo struct { 138 VpcChannelProxyHost string `json:"vpc_channel_proxy_host,omitempty"` 139 VpcChannelID string `json:"vpc_channel_id" required:"true"` 140 } 141 142 type PolicyHttps struct { 143 UrlDomain string `json:"url_domain,omitempty"` 144 ReqProtocol string `json:"req_protocol" required:"true"` 145 ReqMethod string `json:"req_method" required:"true"` 146 ReqUri string `json:"req_uri" required:"true"` 147 Timeout *int `json:"timeout,omitempty"` 148 RetryCount string `json:"retry_count,omitempty"` 149 EffectMode string `json:"effect_mode" required:"true"` 150 Name string `json:"name" required:"true"` 151 BackendParams []BackendParams `json:"backend_params,omitempty"` 152 Conditions []Conditions `json:"conditions" required:"true"` 153 AuthorizerID string `json:"authorizer_id,omitempty"` 154 VpcChannelInfo *VpcChannelInfo `json:"vpc_channel_info,omitempty"` 155 VpcChannelStatus *int `json:"vpc_channel_status,omitempty"` 156 } 157 158 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*ApiResp, error) { 159 b, err := build.RequestBody(opts, "") 160 if err != nil { 161 return nil, err 162 } 163 164 raw, err := client.Post(client.ServiceURL("apigw", "instances", opts.GatewayID, "apis"), b, nil, &golangsdk.RequestOpts{ 165 OkCodes: []int{201}, 166 }) 167 if err != nil { 168 return nil, err 169 } 170 171 var res ApiResp 172 173 err = extract.Into(raw.Body, &res) 174 return &res, err 175 } 176 177 type ApiResp struct { 178 GroupID string `json:"group_id"` 179 Name string `json:"name"` 180 Type int `json:"type"` 181 Version string `json:"version"` 182 ReqProtocol string `json:"req_protocol"` 183 ReqMethod string `json:"req_method"` 184 ReqUri string `json:"req_uri"` 185 AuthType string `json:"auth_type"` 186 AuthOpt *AuthOpt `json:"auth_opt"` 187 Cors bool `json:"cors"` 188 MatchMode string `json:"match_mode"` 189 BackendType string `json:"backend_type"` 190 Description string `json:"remark"` 191 BodyDescription string `json:"body_remark"` 192 ResultNormalSample string `json:"result_normal_sample"` 193 ResultFailureSample string `json:"result_failure_sample"` 194 AuthorizerID string `json:"authorizer_id"` 195 Tags []string `json:"tags"` 196 ResponseID string `json:"response_id"` 197 RomaAppId string `json:"roma_app_id"` 198 RomaAppName string `json:"roma_app_name"` 199 DomainName string `json:"domain_name"` 200 ContentType string `json:"content_type"` 201 ID string `json:"id"` 202 Status int `json:"status"` 203 ArrangeNecessary int `json:"arrange_necessary"` 204 RegisterTime string `json:"register_time"` 205 UpdateTime string `json:"update_time"` 206 GroupName string `json:"group_name"` 207 GroupVersion string `json:"group_version"` 208 RunEnvId string `json:"run_env_id"` 209 RunEnvName string `json:"run_env_name"` 210 PublishID string `json:"publish_id"` 211 PublishTime string `json:"publish_time"` 212 CustomApiId string `json:"ld_api_id"` 213 BackendApi *BackendApi `json:"backend_api"` 214 ApiGroupInfo *ApiGroupInfo `json:"api_group_info"` 215 FuncInfo *FuncInfo `json:"func_info"` 216 MockInfo *MockInfo `json:"mock_info"` 217 ReqParams []ReqParams `json:"req_params"` 218 BackendParams []BackendParams `json:"backend_params"` 219 PolicyMocks []PolicyMocks `json:"policy_mocks"` 220 PolicyFunctions []PolicyFunctions `json:"policy_functions"` 221 PolicyHttps []PolicyHttps `json:"policy_https"` 222 } 223 224 type ApiGroupInfo struct { 225 ID string `json:"id"` 226 Name string `json:"name"` 227 Status int `json:"status"` 228 SlDomain string `json:"sl_domain"` 229 RegisterTime string `json:"register_time"` 230 UpdateTime string `json:"update_time"` 231 OnSellStatus int `json:"on_sell_status"` 232 UrlDomains []UrlDomains `json:"url_domains"` 233 } 234 235 type UrlDomains struct { 236 ID string `json:"id"` 237 Domain string `json:"domain"` 238 CnameStatus int `json:"cname_status"` 239 SslID string `json:"ssl_id"` 240 SslName string `json:"ssl_name"` 241 MinSslVersion string `json:"min_ssl_version"` 242 VfClientCertEnabled bool `json:"verified_client_certificate_enabled"` 243 HasTrustedCa bool `json:"is_has_trusted_root_ca"` 244 }