github.com/sacloud/iaas-api-go@v1.12.0/zz_api_ops.go (about)

     1  // Copyright 2022-2023 The sacloud/iaas-api-go Authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // generated by 'github.com/sacloud/iaas-api-go/internal/tools/gen-api-op'; DO NOT EDIT
    16  
    17  package iaas
    18  
    19  import (
    20  	"context"
    21  
    22  	"github.com/sacloud/iaas-api-go/types"
    23  	"github.com/sacloud/packages-go/mutexkv"
    24  )
    25  
    26  var apiLocker = mutexkv.NewMutexKV()
    27  
    28  func init() {
    29  
    30  	SetClientFactoryFunc("Archive", func(caller APICaller) interface{} {
    31  		return &ArchiveOp{
    32  			Client:     caller,
    33  			PathSuffix: "api/cloud/1.1",
    34  			PathName:   "archive",
    35  		}
    36  	})
    37  
    38  	SetClientFactoryFunc("AuthStatus", func(caller APICaller) interface{} {
    39  		return &AuthStatusOp{
    40  			Client:     caller,
    41  			PathSuffix: "api/cloud/1.1",
    42  			PathName:   "auth-status",
    43  		}
    44  	})
    45  
    46  	SetClientFactoryFunc("AutoBackup", func(caller APICaller) interface{} {
    47  		return &AutoBackupOp{
    48  			Client:     caller,
    49  			PathSuffix: "api/cloud/1.1",
    50  			PathName:   "commonserviceitem",
    51  		}
    52  	})
    53  
    54  	SetClientFactoryFunc("AutoScale", func(caller APICaller) interface{} {
    55  		return &AutoScaleOp{
    56  			Client:     caller,
    57  			PathSuffix: "api/cloud/1.1",
    58  			PathName:   "commonserviceitem",
    59  		}
    60  	})
    61  
    62  	SetClientFactoryFunc("Bill", func(caller APICaller) interface{} {
    63  		return &BillOp{
    64  			Client:     caller,
    65  			PathSuffix: "api/system/1.0",
    66  			PathName:   "bill",
    67  		}
    68  	})
    69  
    70  	SetClientFactoryFunc("Bridge", func(caller APICaller) interface{} {
    71  		return &BridgeOp{
    72  			Client:     caller,
    73  			PathSuffix: "api/cloud/1.1",
    74  			PathName:   "bridge",
    75  		}
    76  	})
    77  
    78  	SetClientFactoryFunc("CDROM", func(caller APICaller) interface{} {
    79  		return &CDROMOp{
    80  			Client:     caller,
    81  			PathSuffix: "api/cloud/1.1",
    82  			PathName:   "cdrom",
    83  		}
    84  	})
    85  
    86  	SetClientFactoryFunc("CertificateAuthority", func(caller APICaller) interface{} {
    87  		return &CertificateAuthorityOp{
    88  			Client:     caller,
    89  			PathSuffix: "api/cloud/1.1",
    90  			PathName:   "commonserviceitem",
    91  		}
    92  	})
    93  
    94  	SetClientFactoryFunc("ContainerRegistry", func(caller APICaller) interface{} {
    95  		return &ContainerRegistryOp{
    96  			Client:     caller,
    97  			PathSuffix: "api/cloud/1.1",
    98  			PathName:   "commonserviceitem",
    99  		}
   100  	})
   101  
   102  	SetClientFactoryFunc("Coupon", func(caller APICaller) interface{} {
   103  		return &CouponOp{
   104  			Client:     caller,
   105  			PathSuffix: "api/system/1.0",
   106  			PathName:   "coupon",
   107  		}
   108  	})
   109  
   110  	SetClientFactoryFunc("Database", func(caller APICaller) interface{} {
   111  		return &DatabaseOp{
   112  			Client:     caller,
   113  			PathSuffix: "api/cloud/1.1",
   114  			PathName:   "appliance",
   115  		}
   116  	})
   117  
   118  	SetClientFactoryFunc("Disk", func(caller APICaller) interface{} {
   119  		return &DiskOp{
   120  			Client:     caller,
   121  			PathSuffix: "api/cloud/1.1",
   122  			PathName:   "disk",
   123  		}
   124  	})
   125  
   126  	SetClientFactoryFunc("DiskPlan", func(caller APICaller) interface{} {
   127  		return &DiskPlanOp{
   128  			Client:     caller,
   129  			PathSuffix: "api/cloud/1.1",
   130  			PathName:   "product/disk",
   131  		}
   132  	})
   133  
   134  	SetClientFactoryFunc("DNS", func(caller APICaller) interface{} {
   135  		return &DNSOp{
   136  			Client:     caller,
   137  			PathSuffix: "api/cloud/1.1",
   138  			PathName:   "commonserviceitem",
   139  		}
   140  	})
   141  
   142  	SetClientFactoryFunc("EnhancedDB", func(caller APICaller) interface{} {
   143  		return &EnhancedDBOp{
   144  			Client:     caller,
   145  			PathSuffix: "api/cloud/1.1",
   146  			PathName:   "commonserviceitem",
   147  		}
   148  	})
   149  
   150  	SetClientFactoryFunc("ESME", func(caller APICaller) interface{} {
   151  		return &ESMEOp{
   152  			Client:     caller,
   153  			PathSuffix: "api/cloud/1.1",
   154  			PathName:   "commonserviceitem",
   155  		}
   156  	})
   157  
   158  	SetClientFactoryFunc("GSLB", func(caller APICaller) interface{} {
   159  		return &GSLBOp{
   160  			Client:     caller,
   161  			PathSuffix: "api/cloud/1.1",
   162  			PathName:   "commonserviceitem",
   163  		}
   164  	})
   165  
   166  	SetClientFactoryFunc("Icon", func(caller APICaller) interface{} {
   167  		return &IconOp{
   168  			Client:     caller,
   169  			PathSuffix: "api/cloud/1.1",
   170  			PathName:   "icon",
   171  		}
   172  	})
   173  
   174  	SetClientFactoryFunc("Interface", func(caller APICaller) interface{} {
   175  		return &InterfaceOp{
   176  			Client:     caller,
   177  			PathSuffix: "api/cloud/1.1",
   178  			PathName:   "interface",
   179  		}
   180  	})
   181  
   182  	SetClientFactoryFunc("Internet", func(caller APICaller) interface{} {
   183  		return &InternetOp{
   184  			Client:     caller,
   185  			PathSuffix: "api/cloud/1.1",
   186  			PathName:   "internet",
   187  		}
   188  	})
   189  
   190  	SetClientFactoryFunc("InternetPlan", func(caller APICaller) interface{} {
   191  		return &InternetPlanOp{
   192  			Client:     caller,
   193  			PathSuffix: "api/cloud/1.1",
   194  			PathName:   "product/internet",
   195  		}
   196  	})
   197  
   198  	SetClientFactoryFunc("IPAddress", func(caller APICaller) interface{} {
   199  		return &IPAddressOp{
   200  			Client:     caller,
   201  			PathSuffix: "api/cloud/1.1",
   202  			PathName:   "ipaddress",
   203  		}
   204  	})
   205  
   206  	SetClientFactoryFunc("IPv6Net", func(caller APICaller) interface{} {
   207  		return &IPv6NetOp{
   208  			Client:     caller,
   209  			PathSuffix: "api/cloud/1.1",
   210  			PathName:   "ipv6net",
   211  		}
   212  	})
   213  
   214  	SetClientFactoryFunc("IPv6Addr", func(caller APICaller) interface{} {
   215  		return &IPv6AddrOp{
   216  			Client:     caller,
   217  			PathSuffix: "api/cloud/1.1",
   218  			PathName:   "ipv6addr",
   219  		}
   220  	})
   221  
   222  	SetClientFactoryFunc("License", func(caller APICaller) interface{} {
   223  		return &LicenseOp{
   224  			Client:     caller,
   225  			PathSuffix: "api/cloud/1.1",
   226  			PathName:   "license",
   227  		}
   228  	})
   229  
   230  	SetClientFactoryFunc("LicenseInfo", func(caller APICaller) interface{} {
   231  		return &LicenseInfoOp{
   232  			Client:     caller,
   233  			PathSuffix: "api/cloud/1.1",
   234  			PathName:   "product/license",
   235  		}
   236  	})
   237  
   238  	SetClientFactoryFunc("LoadBalancer", func(caller APICaller) interface{} {
   239  		return &LoadBalancerOp{
   240  			Client:     caller,
   241  			PathSuffix: "api/cloud/1.1",
   242  			PathName:   "appliance",
   243  		}
   244  	})
   245  
   246  	SetClientFactoryFunc("LocalRouter", func(caller APICaller) interface{} {
   247  		return &LocalRouterOp{
   248  			Client:     caller,
   249  			PathSuffix: "api/cloud/1.1",
   250  			PathName:   "commonserviceitem",
   251  		}
   252  	})
   253  
   254  	SetClientFactoryFunc("MobileGateway", func(caller APICaller) interface{} {
   255  		return &MobileGatewayOp{
   256  			Client:     caller,
   257  			PathSuffix: "api/cloud/1.1",
   258  			PathName:   "appliance",
   259  		}
   260  	})
   261  
   262  	SetClientFactoryFunc("NFS", func(caller APICaller) interface{} {
   263  		return &NFSOp{
   264  			Client:     caller,
   265  			PathSuffix: "api/cloud/1.1",
   266  			PathName:   "appliance",
   267  		}
   268  	})
   269  
   270  	SetClientFactoryFunc("Note", func(caller APICaller) interface{} {
   271  		return &NoteOp{
   272  			Client:     caller,
   273  			PathSuffix: "api/cloud/1.1",
   274  			PathName:   "note",
   275  		}
   276  	})
   277  
   278  	SetClientFactoryFunc("PacketFilter", func(caller APICaller) interface{} {
   279  		return &PacketFilterOp{
   280  			Client:     caller,
   281  			PathSuffix: "api/cloud/1.1",
   282  			PathName:   "packetfilter",
   283  		}
   284  	})
   285  
   286  	SetClientFactoryFunc("PrivateHost", func(caller APICaller) interface{} {
   287  		return &PrivateHostOp{
   288  			Client:     caller,
   289  			PathSuffix: "api/cloud/1.1",
   290  			PathName:   "privatehost",
   291  		}
   292  	})
   293  
   294  	SetClientFactoryFunc("PrivateHostPlan", func(caller APICaller) interface{} {
   295  		return &PrivateHostPlanOp{
   296  			Client:     caller,
   297  			PathSuffix: "api/cloud/1.1",
   298  			PathName:   "product/privatehost",
   299  		}
   300  	})
   301  
   302  	SetClientFactoryFunc("ProxyLB", func(caller APICaller) interface{} {
   303  		return &ProxyLBOp{
   304  			Client:     caller,
   305  			PathSuffix: "api/cloud/1.1",
   306  			PathName:   "commonserviceitem",
   307  		}
   308  	})
   309  
   310  	SetClientFactoryFunc("Region", func(caller APICaller) interface{} {
   311  		return &RegionOp{
   312  			Client:     caller,
   313  			PathSuffix: "api/cloud/1.1",
   314  			PathName:   "region",
   315  		}
   316  	})
   317  
   318  	SetClientFactoryFunc("Server", func(caller APICaller) interface{} {
   319  		return &ServerOp{
   320  			Client:     caller,
   321  			PathSuffix: "api/cloud/1.1",
   322  			PathName:   "server",
   323  		}
   324  	})
   325  
   326  	SetClientFactoryFunc("ServerPlan", func(caller APICaller) interface{} {
   327  		return &ServerPlanOp{
   328  			Client:     caller,
   329  			PathSuffix: "api/cloud/1.1",
   330  			PathName:   "product/server",
   331  		}
   332  	})
   333  
   334  	SetClientFactoryFunc("ServiceClass", func(caller APICaller) interface{} {
   335  		return &ServiceClassOp{
   336  			Client:     caller,
   337  			PathSuffix: "api/cloud/1.1",
   338  			PathName:   "public/price",
   339  		}
   340  	})
   341  
   342  	SetClientFactoryFunc("SIM", func(caller APICaller) interface{} {
   343  		return &SIMOp{
   344  			Client:     caller,
   345  			PathSuffix: "api/cloud/1.1",
   346  			PathName:   "commonserviceitem",
   347  		}
   348  	})
   349  
   350  	SetClientFactoryFunc("SimpleMonitor", func(caller APICaller) interface{} {
   351  		return &SimpleMonitorOp{
   352  			Client:     caller,
   353  			PathSuffix: "api/cloud/1.1",
   354  			PathName:   "commonserviceitem",
   355  		}
   356  	})
   357  
   358  	SetClientFactoryFunc("SSHKey", func(caller APICaller) interface{} {
   359  		return &SSHKeyOp{
   360  			Client:     caller,
   361  			PathSuffix: "api/cloud/1.1",
   362  			PathName:   "sshkey",
   363  		}
   364  	})
   365  
   366  	SetClientFactoryFunc("Subnet", func(caller APICaller) interface{} {
   367  		return &SubnetOp{
   368  			Client:     caller,
   369  			PathSuffix: "api/cloud/1.1",
   370  			PathName:   "subnet",
   371  		}
   372  	})
   373  
   374  	SetClientFactoryFunc("Switch", func(caller APICaller) interface{} {
   375  		return &SwitchOp{
   376  			Client:     caller,
   377  			PathSuffix: "api/cloud/1.1",
   378  			PathName:   "switch",
   379  		}
   380  	})
   381  
   382  	SetClientFactoryFunc("VPCRouter", func(caller APICaller) interface{} {
   383  		return &VPCRouterOp{
   384  			Client:     caller,
   385  			PathSuffix: "api/cloud/1.1",
   386  			PathName:   "appliance",
   387  		}
   388  	})
   389  
   390  	SetClientFactoryFunc("Zone", func(caller APICaller) interface{} {
   391  		return &ZoneOp{
   392  			Client:     caller,
   393  			PathSuffix: "api/cloud/1.1",
   394  			PathName:   "zone",
   395  		}
   396  	})
   397  }
   398  
   399  /*************************************************
   400  * ArchiveOp
   401  *************************************************/
   402  
   403  // ArchiveOp implements ArchiveAPI interface
   404  type ArchiveOp struct {
   405  	// Client APICaller
   406  	Client APICaller
   407  	// PathSuffix is used when building URL
   408  	PathSuffix string
   409  	// PathName is used when building URL
   410  	PathName string
   411  }
   412  
   413  // NewArchiveOp creates new ArchiveOp instance
   414  func NewArchiveOp(caller APICaller) ArchiveAPI {
   415  	return GetClientFactoryFunc("Archive")(caller).(ArchiveAPI)
   416  }
   417  
   418  // Find is API call
   419  func (o *ArchiveOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*ArchiveFindResult, error) {
   420  	// build request URL
   421  	pathBuildParameter := map[string]interface{}{
   422  		"rootURL":    SakuraCloudAPIRoot,
   423  		"pathSuffix": o.PathSuffix,
   424  		"pathName":   o.PathName,
   425  		"zone":       zone,
   426  		"conditions": conditions,
   427  	}
   428  
   429  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   430  	if err != nil {
   431  		return nil, err
   432  	}
   433  	// build request body
   434  	var body interface{}
   435  	v, err := o.transformFindArgs(conditions)
   436  	if err != nil {
   437  		return nil, err
   438  	}
   439  	body = v
   440  
   441  	// do request
   442  	data, err := o.Client.Do(ctx, "GET", url, body)
   443  	if err != nil {
   444  		return nil, err
   445  	}
   446  
   447  	// build results
   448  	results, err := o.transformFindResults(data)
   449  	if err != nil {
   450  		return nil, err
   451  	}
   452  	return results, err
   453  }
   454  
   455  // Create is API call
   456  func (o *ArchiveOp) Create(ctx context.Context, zone string, param *ArchiveCreateRequest) (*Archive, error) {
   457  	// build request URL
   458  	pathBuildParameter := map[string]interface{}{
   459  		"rootURL":    SakuraCloudAPIRoot,
   460  		"pathSuffix": o.PathSuffix,
   461  		"pathName":   o.PathName,
   462  		"zone":       zone,
   463  		"param":      param,
   464  	}
   465  
   466  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   467  	if err != nil {
   468  		return nil, err
   469  	}
   470  	// build request body
   471  	var body interface{}
   472  	v, err := o.transformCreateArgs(param)
   473  	if err != nil {
   474  		return nil, err
   475  	}
   476  	body = v
   477  
   478  	// do request
   479  	data, err := o.Client.Do(ctx, "POST", url, body)
   480  	if err != nil {
   481  		return nil, err
   482  	}
   483  
   484  	// build results
   485  	results, err := o.transformCreateResults(data)
   486  	if err != nil {
   487  		return nil, err
   488  	}
   489  	return results.Archive, nil
   490  }
   491  
   492  // CreateBlank is API call
   493  func (o *ArchiveOp) CreateBlank(ctx context.Context, zone string, param *ArchiveCreateBlankRequest) (*Archive, *FTPServer, error) {
   494  	// build request URL
   495  	pathBuildParameter := map[string]interface{}{
   496  		"rootURL":    SakuraCloudAPIRoot,
   497  		"pathSuffix": o.PathSuffix,
   498  		"pathName":   o.PathName,
   499  		"zone":       zone,
   500  		"param":      param,
   501  	}
   502  
   503  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   504  	if err != nil {
   505  		return nil, nil, err
   506  	}
   507  	// build request body
   508  	var body interface{}
   509  	v, err := o.transformCreateBlankArgs(param)
   510  	if err != nil {
   511  		return nil, nil, err
   512  	}
   513  	body = v
   514  
   515  	// do request
   516  	data, err := o.Client.Do(ctx, "POST", url, body)
   517  	if err != nil {
   518  		return nil, nil, err
   519  	}
   520  
   521  	// build results
   522  	results, err := o.transformCreateBlankResults(data)
   523  	if err != nil {
   524  		return nil, nil, err
   525  	}
   526  	return results.Archive, results.FTPServer, nil
   527  }
   528  
   529  // Read is API call
   530  func (o *ArchiveOp) Read(ctx context.Context, zone string, id types.ID) (*Archive, error) {
   531  	// build request URL
   532  	pathBuildParameter := map[string]interface{}{
   533  		"rootURL":    SakuraCloudAPIRoot,
   534  		"pathSuffix": o.PathSuffix,
   535  		"pathName":   o.PathName,
   536  		"zone":       zone,
   537  		"id":         id,
   538  	}
   539  
   540  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
   541  	if err != nil {
   542  		return nil, err
   543  	}
   544  	// build request body
   545  	var body interface{}
   546  
   547  	// do request
   548  	data, err := o.Client.Do(ctx, "GET", url, body)
   549  	if err != nil {
   550  		return nil, err
   551  	}
   552  
   553  	// build results
   554  	results, err := o.transformReadResults(data)
   555  	if err != nil {
   556  		return nil, err
   557  	}
   558  	return results.Archive, nil
   559  }
   560  
   561  // Update is API call
   562  func (o *ArchiveOp) Update(ctx context.Context, zone string, id types.ID, param *ArchiveUpdateRequest) (*Archive, error) {
   563  	// build request URL
   564  	pathBuildParameter := map[string]interface{}{
   565  		"rootURL":    SakuraCloudAPIRoot,
   566  		"pathSuffix": o.PathSuffix,
   567  		"pathName":   o.PathName,
   568  		"zone":       zone,
   569  		"id":         id,
   570  		"param":      param,
   571  	}
   572  
   573  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
   574  	if err != nil {
   575  		return nil, err
   576  	}
   577  	// build request body
   578  	var body interface{}
   579  	v, err := o.transformUpdateArgs(id, param)
   580  	if err != nil {
   581  		return nil, err
   582  	}
   583  	body = v
   584  
   585  	// do request
   586  	data, err := o.Client.Do(ctx, "PUT", url, body)
   587  	if err != nil {
   588  		return nil, err
   589  	}
   590  
   591  	// build results
   592  	results, err := o.transformUpdateResults(data)
   593  	if err != nil {
   594  		return nil, err
   595  	}
   596  	return results.Archive, nil
   597  }
   598  
   599  // Delete is API call
   600  func (o *ArchiveOp) Delete(ctx context.Context, zone string, id types.ID) error {
   601  	// build request URL
   602  	pathBuildParameter := map[string]interface{}{
   603  		"rootURL":    SakuraCloudAPIRoot,
   604  		"pathSuffix": o.PathSuffix,
   605  		"pathName":   o.PathName,
   606  		"zone":       zone,
   607  		"id":         id,
   608  	}
   609  
   610  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
   611  	if err != nil {
   612  		return err
   613  	}
   614  	// build request body
   615  	var body interface{}
   616  
   617  	// do request
   618  	_, err = o.Client.Do(ctx, "DELETE", url, body)
   619  	if err != nil {
   620  		return err
   621  	}
   622  
   623  	// build results
   624  
   625  	return nil
   626  }
   627  
   628  // OpenFTP is API call
   629  func (o *ArchiveOp) OpenFTP(ctx context.Context, zone string, id types.ID, openOption *OpenFTPRequest) (*FTPServer, error) {
   630  	// build request URL
   631  	pathBuildParameter := map[string]interface{}{
   632  		"rootURL":    SakuraCloudAPIRoot,
   633  		"pathSuffix": o.PathSuffix,
   634  		"pathName":   o.PathName,
   635  		"zone":       zone,
   636  		"id":         id,
   637  		"openOption": openOption,
   638  	}
   639  
   640  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ftp", pathBuildParameter)
   641  	if err != nil {
   642  		return nil, err
   643  	}
   644  	// build request body
   645  	var body interface{}
   646  	v, err := o.transformOpenFTPArgs(id, openOption)
   647  	if err != nil {
   648  		return nil, err
   649  	}
   650  	body = v
   651  
   652  	// do request
   653  	data, err := o.Client.Do(ctx, "PUT", url, body)
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  
   658  	// build results
   659  	results, err := o.transformOpenFTPResults(data)
   660  	if err != nil {
   661  		return nil, err
   662  	}
   663  	return results.FTPServer, nil
   664  }
   665  
   666  // CloseFTP is API call
   667  func (o *ArchiveOp) CloseFTP(ctx context.Context, zone string, id types.ID) error {
   668  	// build request URL
   669  	pathBuildParameter := map[string]interface{}{
   670  		"rootURL":    SakuraCloudAPIRoot,
   671  		"pathSuffix": o.PathSuffix,
   672  		"pathName":   o.PathName,
   673  		"zone":       zone,
   674  		"id":         id,
   675  	}
   676  
   677  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ftp", pathBuildParameter)
   678  	if err != nil {
   679  		return err
   680  	}
   681  	// build request body
   682  	var body interface{}
   683  
   684  	// do request
   685  	_, err = o.Client.Do(ctx, "DELETE", url, body)
   686  	if err != nil {
   687  		return err
   688  	}
   689  
   690  	// build results
   691  
   692  	return nil
   693  }
   694  
   695  // Share is API call
   696  func (o *ArchiveOp) Share(ctx context.Context, zone string, id types.ID) (*ArchiveShareInfo, error) {
   697  	// build request URL
   698  	pathBuildParameter := map[string]interface{}{
   699  		"rootURL":    SakuraCloudAPIRoot,
   700  		"pathSuffix": o.PathSuffix,
   701  		"pathName":   o.PathName,
   702  		"zone":       zone,
   703  		"id":         id,
   704  	}
   705  
   706  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ftp", pathBuildParameter)
   707  	if err != nil {
   708  		return nil, err
   709  	}
   710  	// build request body
   711  	var body interface{}
   712  	v, err := o.transformShareArgs(id)
   713  	if err != nil {
   714  		return nil, err
   715  	}
   716  	body = v
   717  
   718  	// do request
   719  	data, err := o.Client.Do(ctx, "PUT", url, body)
   720  	if err != nil {
   721  		return nil, err
   722  	}
   723  
   724  	// build results
   725  	results, err := o.transformShareResults(data)
   726  	if err != nil {
   727  		return nil, err
   728  	}
   729  	return results.ArchiveShareInfo, nil
   730  }
   731  
   732  // CreateFromShared is API call
   733  func (o *ArchiveOp) CreateFromShared(ctx context.Context, zone string, sourceArchiveID types.ID, destZoneID types.ID, param *ArchiveCreateRequestFromShared) (*Archive, error) {
   734  	// build request URL
   735  	pathBuildParameter := map[string]interface{}{
   736  		"rootURL":         SakuraCloudAPIRoot,
   737  		"pathSuffix":      o.PathSuffix,
   738  		"pathName":        o.PathName,
   739  		"zone":            zone,
   740  		"sourceArchiveID": sourceArchiveID,
   741  		"destZoneID":      destZoneID,
   742  		"param":           param,
   743  	}
   744  
   745  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.sourceArchiveID}}/to/zone/{{.destZoneID}}", pathBuildParameter)
   746  	if err != nil {
   747  		return nil, err
   748  	}
   749  	// build request body
   750  	var body interface{}
   751  	v, err := o.transformCreateFromSharedArgs(sourceArchiveID, destZoneID, param)
   752  	if err != nil {
   753  		return nil, err
   754  	}
   755  	body = v
   756  
   757  	// do request
   758  	data, err := o.Client.Do(ctx, "POST", url, body)
   759  	if err != nil {
   760  		return nil, err
   761  	}
   762  
   763  	// build results
   764  	results, err := o.transformCreateFromSharedResults(data)
   765  	if err != nil {
   766  		return nil, err
   767  	}
   768  	return results.Archive, nil
   769  }
   770  
   771  // Transfer is API call
   772  func (o *ArchiveOp) Transfer(ctx context.Context, zone string, sourceArchiveID types.ID, destZoneID types.ID, param *ArchiveTransferRequest) (*Archive, error) {
   773  	// build request URL
   774  	pathBuildParameter := map[string]interface{}{
   775  		"rootURL":         SakuraCloudAPIRoot,
   776  		"pathSuffix":      o.PathSuffix,
   777  		"pathName":        o.PathName,
   778  		"zone":            zone,
   779  		"sourceArchiveID": sourceArchiveID,
   780  		"destZoneID":      destZoneID,
   781  		"param":           param,
   782  	}
   783  
   784  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.sourceArchiveID}}/to/zone/{{.destZoneID}}", pathBuildParameter)
   785  	if err != nil {
   786  		return nil, err
   787  	}
   788  	// build request body
   789  	var body interface{}
   790  	v, err := o.transformTransferArgs(sourceArchiveID, destZoneID, param)
   791  	if err != nil {
   792  		return nil, err
   793  	}
   794  	body = v
   795  
   796  	// do request
   797  	data, err := o.Client.Do(ctx, "POST", url, body)
   798  	if err != nil {
   799  		return nil, err
   800  	}
   801  
   802  	// build results
   803  	results, err := o.transformTransferResults(data)
   804  	if err != nil {
   805  		return nil, err
   806  	}
   807  	return results.Archive, nil
   808  }
   809  
   810  /*************************************************
   811  * AuthStatusOp
   812  *************************************************/
   813  
   814  // AuthStatusOp implements AuthStatusAPI interface
   815  type AuthStatusOp struct {
   816  	// Client APICaller
   817  	Client APICaller
   818  	// PathSuffix is used when building URL
   819  	PathSuffix string
   820  	// PathName is used when building URL
   821  	PathName string
   822  }
   823  
   824  // NewAuthStatusOp creates new AuthStatusOp instance
   825  func NewAuthStatusOp(caller APICaller) AuthStatusAPI {
   826  	return GetClientFactoryFunc("AuthStatus")(caller).(AuthStatusAPI)
   827  }
   828  
   829  // Read is API call
   830  func (o *AuthStatusOp) Read(ctx context.Context) (*AuthStatus, error) {
   831  	// build request URL
   832  	pathBuildParameter := map[string]interface{}{
   833  		"rootURL":    SakuraCloudAPIRoot,
   834  		"pathSuffix": o.PathSuffix,
   835  		"pathName":   o.PathName,
   836  		"zone":       APIDefaultZone,
   837  	}
   838  
   839  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   840  	if err != nil {
   841  		return nil, err
   842  	}
   843  	// build request body
   844  	var body interface{}
   845  
   846  	// do request
   847  	data, err := o.Client.Do(ctx, "GET", url, body)
   848  	if err != nil {
   849  		return nil, err
   850  	}
   851  
   852  	// build results
   853  	results, err := o.transformReadResults(data)
   854  	if err != nil {
   855  		return nil, err
   856  	}
   857  	return results.AuthStatus, nil
   858  }
   859  
   860  /*************************************************
   861  * AutoBackupOp
   862  *************************************************/
   863  
   864  // AutoBackupOp implements AutoBackupAPI interface
   865  type AutoBackupOp struct {
   866  	// Client APICaller
   867  	Client APICaller
   868  	// PathSuffix is used when building URL
   869  	PathSuffix string
   870  	// PathName is used when building URL
   871  	PathName string
   872  }
   873  
   874  // NewAutoBackupOp creates new AutoBackupOp instance
   875  func NewAutoBackupOp(caller APICaller) AutoBackupAPI {
   876  	return GetClientFactoryFunc("AutoBackup")(caller).(AutoBackupAPI)
   877  }
   878  
   879  // Find is API call
   880  func (o *AutoBackupOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*AutoBackupFindResult, error) {
   881  	// build request URL
   882  	pathBuildParameter := map[string]interface{}{
   883  		"rootURL":    SakuraCloudAPIRoot,
   884  		"pathSuffix": o.PathSuffix,
   885  		"pathName":   o.PathName,
   886  		"zone":       zone,
   887  		"conditions": conditions,
   888  	}
   889  
   890  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   891  	if err != nil {
   892  		return nil, err
   893  	}
   894  	// build request body
   895  	var body interface{}
   896  	v, err := o.transformFindArgs(conditions)
   897  	if err != nil {
   898  		return nil, err
   899  	}
   900  	body = v
   901  
   902  	// do request
   903  	data, err := o.Client.Do(ctx, "GET", url, body)
   904  	if err != nil {
   905  		return nil, err
   906  	}
   907  
   908  	// build results
   909  	results, err := o.transformFindResults(data)
   910  	if err != nil {
   911  		return nil, err
   912  	}
   913  	return results, err
   914  }
   915  
   916  // Create is API call
   917  func (o *AutoBackupOp) Create(ctx context.Context, zone string, param *AutoBackupCreateRequest) (*AutoBackup, error) {
   918  	// build request URL
   919  	pathBuildParameter := map[string]interface{}{
   920  		"rootURL":    SakuraCloudAPIRoot,
   921  		"pathSuffix": o.PathSuffix,
   922  		"pathName":   o.PathName,
   923  		"zone":       zone,
   924  		"param":      param,
   925  	}
   926  
   927  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
   928  	if err != nil {
   929  		return nil, err
   930  	}
   931  	// build request body
   932  	var body interface{}
   933  	v, err := o.transformCreateArgs(param)
   934  	if err != nil {
   935  		return nil, err
   936  	}
   937  	body = v
   938  
   939  	// do request
   940  	data, err := o.Client.Do(ctx, "POST", url, body)
   941  	if err != nil {
   942  		return nil, err
   943  	}
   944  
   945  	// build results
   946  	results, err := o.transformCreateResults(data)
   947  	if err != nil {
   948  		return nil, err
   949  	}
   950  	return results.AutoBackup, nil
   951  }
   952  
   953  // Read is API call
   954  func (o *AutoBackupOp) Read(ctx context.Context, zone string, id types.ID) (*AutoBackup, error) {
   955  	// build request URL
   956  	pathBuildParameter := map[string]interface{}{
   957  		"rootURL":    SakuraCloudAPIRoot,
   958  		"pathSuffix": o.PathSuffix,
   959  		"pathName":   o.PathName,
   960  		"zone":       zone,
   961  		"id":         id,
   962  	}
   963  
   964  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
   965  	if err != nil {
   966  		return nil, err
   967  	}
   968  	// build request body
   969  	var body interface{}
   970  
   971  	// do request
   972  	data, err := o.Client.Do(ctx, "GET", url, body)
   973  	if err != nil {
   974  		return nil, err
   975  	}
   976  
   977  	// build results
   978  	results, err := o.transformReadResults(data)
   979  	if err != nil {
   980  		return nil, err
   981  	}
   982  	return results.AutoBackup, nil
   983  }
   984  
   985  // Update is API call
   986  func (o *AutoBackupOp) Update(ctx context.Context, zone string, id types.ID, param *AutoBackupUpdateRequest) (*AutoBackup, error) {
   987  	// build request URL
   988  	pathBuildParameter := map[string]interface{}{
   989  		"rootURL":    SakuraCloudAPIRoot,
   990  		"pathSuffix": o.PathSuffix,
   991  		"pathName":   o.PathName,
   992  		"zone":       zone,
   993  		"id":         id,
   994  		"param":      param,
   995  	}
   996  
   997  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
   998  	if err != nil {
   999  		return nil, err
  1000  	}
  1001  	// build request body
  1002  	var body interface{}
  1003  	v, err := o.transformUpdateArgs(id, param)
  1004  	if err != nil {
  1005  		return nil, err
  1006  	}
  1007  	body = v
  1008  
  1009  	// do request
  1010  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1011  	if err != nil {
  1012  		return nil, err
  1013  	}
  1014  
  1015  	// build results
  1016  	results, err := o.transformUpdateResults(data)
  1017  	if err != nil {
  1018  		return nil, err
  1019  	}
  1020  	return results.AutoBackup, nil
  1021  }
  1022  
  1023  // UpdateSettings is API call
  1024  func (o *AutoBackupOp) UpdateSettings(ctx context.Context, zone string, id types.ID, param *AutoBackupUpdateSettingsRequest) (*AutoBackup, error) {
  1025  	// build request URL
  1026  	pathBuildParameter := map[string]interface{}{
  1027  		"rootURL":    SakuraCloudAPIRoot,
  1028  		"pathSuffix": o.PathSuffix,
  1029  		"pathName":   o.PathName,
  1030  		"zone":       zone,
  1031  		"id":         id,
  1032  		"param":      param,
  1033  	}
  1034  
  1035  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1036  	if err != nil {
  1037  		return nil, err
  1038  	}
  1039  	// build request body
  1040  	var body interface{}
  1041  	v, err := o.transformUpdateSettingsArgs(id, param)
  1042  	if err != nil {
  1043  		return nil, err
  1044  	}
  1045  	body = v
  1046  
  1047  	// do request
  1048  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1049  	if err != nil {
  1050  		return nil, err
  1051  	}
  1052  
  1053  	// build results
  1054  	results, err := o.transformUpdateSettingsResults(data)
  1055  	if err != nil {
  1056  		return nil, err
  1057  	}
  1058  	return results.AutoBackup, nil
  1059  }
  1060  
  1061  // Delete is API call
  1062  func (o *AutoBackupOp) Delete(ctx context.Context, zone string, id types.ID) error {
  1063  	// build request URL
  1064  	pathBuildParameter := map[string]interface{}{
  1065  		"rootURL":    SakuraCloudAPIRoot,
  1066  		"pathSuffix": o.PathSuffix,
  1067  		"pathName":   o.PathName,
  1068  		"zone":       zone,
  1069  		"id":         id,
  1070  	}
  1071  
  1072  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1073  	if err != nil {
  1074  		return err
  1075  	}
  1076  	// build request body
  1077  	var body interface{}
  1078  
  1079  	// do request
  1080  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  1081  	if err != nil {
  1082  		return err
  1083  	}
  1084  
  1085  	// build results
  1086  
  1087  	return nil
  1088  }
  1089  
  1090  /*************************************************
  1091  * AutoScaleOp
  1092  *************************************************/
  1093  
  1094  // AutoScaleOp implements AutoScaleAPI interface
  1095  type AutoScaleOp struct {
  1096  	// Client APICaller
  1097  	Client APICaller
  1098  	// PathSuffix is used when building URL
  1099  	PathSuffix string
  1100  	// PathName is used when building URL
  1101  	PathName string
  1102  }
  1103  
  1104  // NewAutoScaleOp creates new AutoScaleOp instance
  1105  func NewAutoScaleOp(caller APICaller) AutoScaleAPI {
  1106  	return GetClientFactoryFunc("AutoScale")(caller).(AutoScaleAPI)
  1107  }
  1108  
  1109  // Find is API call
  1110  func (o *AutoScaleOp) Find(ctx context.Context, conditions *FindCondition) (*AutoScaleFindResult, error) {
  1111  	// build request URL
  1112  	pathBuildParameter := map[string]interface{}{
  1113  		"rootURL":    SakuraCloudAPIRoot,
  1114  		"pathSuffix": o.PathSuffix,
  1115  		"pathName":   o.PathName,
  1116  		"zone":       APIDefaultZone,
  1117  		"conditions": conditions,
  1118  	}
  1119  
  1120  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1121  	if err != nil {
  1122  		return nil, err
  1123  	}
  1124  	// build request body
  1125  	var body interface{}
  1126  	v, err := o.transformFindArgs(conditions)
  1127  	if err != nil {
  1128  		return nil, err
  1129  	}
  1130  	body = v
  1131  
  1132  	// do request
  1133  	data, err := o.Client.Do(ctx, "GET", url, body)
  1134  	if err != nil {
  1135  		return nil, err
  1136  	}
  1137  
  1138  	// build results
  1139  	results, err := o.transformFindResults(data)
  1140  	if err != nil {
  1141  		return nil, err
  1142  	}
  1143  	return results, err
  1144  }
  1145  
  1146  // Create is API call
  1147  func (o *AutoScaleOp) Create(ctx context.Context, param *AutoScaleCreateRequest) (*AutoScale, error) {
  1148  	// build request URL
  1149  	pathBuildParameter := map[string]interface{}{
  1150  		"rootURL":    SakuraCloudAPIRoot,
  1151  		"pathSuffix": o.PathSuffix,
  1152  		"pathName":   o.PathName,
  1153  		"zone":       APIDefaultZone,
  1154  		"param":      param,
  1155  	}
  1156  
  1157  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1158  	if err != nil {
  1159  		return nil, err
  1160  	}
  1161  	// build request body
  1162  	var body interface{}
  1163  	v, err := o.transformCreateArgs(param)
  1164  	if err != nil {
  1165  		return nil, err
  1166  	}
  1167  	body = v
  1168  
  1169  	// do request
  1170  	data, err := o.Client.Do(ctx, "POST", url, body)
  1171  	if err != nil {
  1172  		return nil, err
  1173  	}
  1174  
  1175  	// build results
  1176  	results, err := o.transformCreateResults(data)
  1177  	if err != nil {
  1178  		return nil, err
  1179  	}
  1180  	return results.AutoScale, nil
  1181  }
  1182  
  1183  // Read is API call
  1184  func (o *AutoScaleOp) Read(ctx context.Context, id types.ID) (*AutoScale, error) {
  1185  	// build request URL
  1186  	pathBuildParameter := map[string]interface{}{
  1187  		"rootURL":    SakuraCloudAPIRoot,
  1188  		"pathSuffix": o.PathSuffix,
  1189  		"pathName":   o.PathName,
  1190  		"zone":       APIDefaultZone,
  1191  		"id":         id,
  1192  	}
  1193  
  1194  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1195  	if err != nil {
  1196  		return nil, err
  1197  	}
  1198  	// build request body
  1199  	var body interface{}
  1200  
  1201  	// do request
  1202  	data, err := o.Client.Do(ctx, "GET", url, body)
  1203  	if err != nil {
  1204  		return nil, err
  1205  	}
  1206  
  1207  	// build results
  1208  	results, err := o.transformReadResults(data)
  1209  	if err != nil {
  1210  		return nil, err
  1211  	}
  1212  	return results.AutoScale, nil
  1213  }
  1214  
  1215  // Update is API call
  1216  func (o *AutoScaleOp) Update(ctx context.Context, id types.ID, param *AutoScaleUpdateRequest) (*AutoScale, error) {
  1217  	// build request URL
  1218  	pathBuildParameter := map[string]interface{}{
  1219  		"rootURL":    SakuraCloudAPIRoot,
  1220  		"pathSuffix": o.PathSuffix,
  1221  		"pathName":   o.PathName,
  1222  		"zone":       APIDefaultZone,
  1223  		"id":         id,
  1224  		"param":      param,
  1225  	}
  1226  
  1227  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1228  	if err != nil {
  1229  		return nil, err
  1230  	}
  1231  	// build request body
  1232  	var body interface{}
  1233  	v, err := o.transformUpdateArgs(id, param)
  1234  	if err != nil {
  1235  		return nil, err
  1236  	}
  1237  	body = v
  1238  
  1239  	// do request
  1240  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1241  	if err != nil {
  1242  		return nil, err
  1243  	}
  1244  
  1245  	// build results
  1246  	results, err := o.transformUpdateResults(data)
  1247  	if err != nil {
  1248  		return nil, err
  1249  	}
  1250  	return results.AutoScale, nil
  1251  }
  1252  
  1253  // UpdateSettings is API call
  1254  func (o *AutoScaleOp) UpdateSettings(ctx context.Context, id types.ID, param *AutoScaleUpdateSettingsRequest) (*AutoScale, error) {
  1255  	// build request URL
  1256  	pathBuildParameter := map[string]interface{}{
  1257  		"rootURL":    SakuraCloudAPIRoot,
  1258  		"pathSuffix": o.PathSuffix,
  1259  		"pathName":   o.PathName,
  1260  		"zone":       APIDefaultZone,
  1261  		"id":         id,
  1262  		"param":      param,
  1263  	}
  1264  
  1265  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1266  	if err != nil {
  1267  		return nil, err
  1268  	}
  1269  	// build request body
  1270  	var body interface{}
  1271  	v, err := o.transformUpdateSettingsArgs(id, param)
  1272  	if err != nil {
  1273  		return nil, err
  1274  	}
  1275  	body = v
  1276  
  1277  	// do request
  1278  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1279  	if err != nil {
  1280  		return nil, err
  1281  	}
  1282  
  1283  	// build results
  1284  	results, err := o.transformUpdateSettingsResults(data)
  1285  	if err != nil {
  1286  		return nil, err
  1287  	}
  1288  	return results.AutoScale, nil
  1289  }
  1290  
  1291  // Delete is API call
  1292  func (o *AutoScaleOp) Delete(ctx context.Context, id types.ID) error {
  1293  	// build request URL
  1294  	pathBuildParameter := map[string]interface{}{
  1295  		"rootURL":    SakuraCloudAPIRoot,
  1296  		"pathSuffix": o.PathSuffix,
  1297  		"pathName":   o.PathName,
  1298  		"zone":       APIDefaultZone,
  1299  		"id":         id,
  1300  	}
  1301  
  1302  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1303  	if err != nil {
  1304  		return err
  1305  	}
  1306  	// build request body
  1307  	var body interface{}
  1308  
  1309  	// do request
  1310  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  1311  	if err != nil {
  1312  		return err
  1313  	}
  1314  
  1315  	// build results
  1316  
  1317  	return nil
  1318  }
  1319  
  1320  // Status is API call
  1321  func (o *AutoScaleOp) Status(ctx context.Context, id types.ID) (*AutoScaleStatus, error) {
  1322  	// build request URL
  1323  	pathBuildParameter := map[string]interface{}{
  1324  		"rootURL":    SakuraCloudAPIRoot,
  1325  		"pathSuffix": o.PathSuffix,
  1326  		"pathName":   o.PathName,
  1327  		"zone":       APIDefaultZone,
  1328  		"id":         id,
  1329  	}
  1330  
  1331  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/autoscale/status", pathBuildParameter)
  1332  	if err != nil {
  1333  		return nil, err
  1334  	}
  1335  	// build request body
  1336  	var body interface{}
  1337  
  1338  	// do request
  1339  	data, err := o.Client.Do(ctx, "GET", url, body)
  1340  	if err != nil {
  1341  		return nil, err
  1342  	}
  1343  
  1344  	// build results
  1345  	results, err := o.transformStatusResults(data)
  1346  	if err != nil {
  1347  		return nil, err
  1348  	}
  1349  	return results.AutoScaleStatus, nil
  1350  }
  1351  
  1352  // ScaleUp is API call
  1353  func (o *AutoScaleOp) ScaleUp(ctx context.Context, id types.ID) error {
  1354  	// build request URL
  1355  	pathBuildParameter := map[string]interface{}{
  1356  		"rootURL":    SakuraCloudAPIRoot,
  1357  		"pathSuffix": o.PathSuffix,
  1358  		"pathName":   o.PathName,
  1359  		"zone":       APIDefaultZone,
  1360  		"id":         id,
  1361  	}
  1362  
  1363  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/autoscale/up", pathBuildParameter)
  1364  	if err != nil {
  1365  		return err
  1366  	}
  1367  	// build request body
  1368  	var body interface{}
  1369  
  1370  	// do request
  1371  	_, err = o.Client.Do(ctx, "PUT", url, body)
  1372  	if err != nil {
  1373  		return err
  1374  	}
  1375  
  1376  	// build results
  1377  
  1378  	return nil
  1379  }
  1380  
  1381  // ScaleDown is API call
  1382  func (o *AutoScaleOp) ScaleDown(ctx context.Context, id types.ID) error {
  1383  	// build request URL
  1384  	pathBuildParameter := map[string]interface{}{
  1385  		"rootURL":    SakuraCloudAPIRoot,
  1386  		"pathSuffix": o.PathSuffix,
  1387  		"pathName":   o.PathName,
  1388  		"zone":       APIDefaultZone,
  1389  		"id":         id,
  1390  	}
  1391  
  1392  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/autoscale/down", pathBuildParameter)
  1393  	if err != nil {
  1394  		return err
  1395  	}
  1396  	// build request body
  1397  	var body interface{}
  1398  
  1399  	// do request
  1400  	_, err = o.Client.Do(ctx, "PUT", url, body)
  1401  	if err != nil {
  1402  		return err
  1403  	}
  1404  
  1405  	// build results
  1406  
  1407  	return nil
  1408  }
  1409  
  1410  /*************************************************
  1411  * BillOp
  1412  *************************************************/
  1413  
  1414  // BillOp implements BillAPI interface
  1415  type BillOp struct {
  1416  	// Client APICaller
  1417  	Client APICaller
  1418  	// PathSuffix is used when building URL
  1419  	PathSuffix string
  1420  	// PathName is used when building URL
  1421  	PathName string
  1422  }
  1423  
  1424  // NewBillOp creates new BillOp instance
  1425  func NewBillOp(caller APICaller) BillAPI {
  1426  	return GetClientFactoryFunc("Bill")(caller).(BillAPI)
  1427  }
  1428  
  1429  // ByContract is API call
  1430  func (o *BillOp) ByContract(ctx context.Context, accountID types.ID) (*BillByContractResult, error) {
  1431  	// build request URL
  1432  	pathBuildParameter := map[string]interface{}{
  1433  		"rootURL":    SakuraCloudAPIRoot,
  1434  		"pathSuffix": o.PathSuffix,
  1435  		"pathName":   o.PathName,
  1436  		"zone":       APIDefaultZone,
  1437  		"accountID":  accountID,
  1438  	}
  1439  
  1440  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/by-contract/{{.accountID}}", pathBuildParameter)
  1441  	if err != nil {
  1442  		return nil, err
  1443  	}
  1444  	// build request body
  1445  	var body interface{}
  1446  
  1447  	// do request
  1448  	data, err := o.Client.Do(ctx, "GET", url, body)
  1449  	if err != nil {
  1450  		return nil, err
  1451  	}
  1452  
  1453  	// build results
  1454  	results, err := o.transformByContractResults(data)
  1455  	if err != nil {
  1456  		return nil, err
  1457  	}
  1458  	return results, err
  1459  }
  1460  
  1461  // ByContractYear is API call
  1462  func (o *BillOp) ByContractYear(ctx context.Context, accountID types.ID, year int) (*BillByContractYearResult, error) {
  1463  	// build request URL
  1464  	pathBuildParameter := map[string]interface{}{
  1465  		"rootURL":    SakuraCloudAPIRoot,
  1466  		"pathSuffix": o.PathSuffix,
  1467  		"pathName":   o.PathName,
  1468  		"zone":       APIDefaultZone,
  1469  		"accountID":  accountID,
  1470  		"year":       year,
  1471  	}
  1472  
  1473  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/by-contract/{{.accountID}}/{{.year}}", pathBuildParameter)
  1474  	if err != nil {
  1475  		return nil, err
  1476  	}
  1477  	// build request body
  1478  	var body interface{}
  1479  
  1480  	// do request
  1481  	data, err := o.Client.Do(ctx, "GET", url, body)
  1482  	if err != nil {
  1483  		return nil, err
  1484  	}
  1485  
  1486  	// build results
  1487  	results, err := o.transformByContractYearResults(data)
  1488  	if err != nil {
  1489  		return nil, err
  1490  	}
  1491  	return results, err
  1492  }
  1493  
  1494  // ByContractYearMonth is API call
  1495  func (o *BillOp) ByContractYearMonth(ctx context.Context, accountID types.ID, year int, month int) (*BillByContractYearMonthResult, error) {
  1496  	// build request URL
  1497  	pathBuildParameter := map[string]interface{}{
  1498  		"rootURL":    SakuraCloudAPIRoot,
  1499  		"pathSuffix": o.PathSuffix,
  1500  		"pathName":   o.PathName,
  1501  		"zone":       APIDefaultZone,
  1502  		"accountID":  accountID,
  1503  		"year":       year,
  1504  		"month":      month,
  1505  	}
  1506  
  1507  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/by-contract/{{.accountID}}/{{.year}}/{{.month}}", pathBuildParameter)
  1508  	if err != nil {
  1509  		return nil, err
  1510  	}
  1511  	// build request body
  1512  	var body interface{}
  1513  
  1514  	// do request
  1515  	data, err := o.Client.Do(ctx, "GET", url, body)
  1516  	if err != nil {
  1517  		return nil, err
  1518  	}
  1519  
  1520  	// build results
  1521  	results, err := o.transformByContractYearMonthResults(data)
  1522  	if err != nil {
  1523  		return nil, err
  1524  	}
  1525  	return results, err
  1526  }
  1527  
  1528  // Read is API call
  1529  func (o *BillOp) Read(ctx context.Context, id types.ID) (*BillReadResult, error) {
  1530  	// build request URL
  1531  	pathBuildParameter := map[string]interface{}{
  1532  		"rootURL":    SakuraCloudAPIRoot,
  1533  		"pathSuffix": o.PathSuffix,
  1534  		"pathName":   o.PathName,
  1535  		"zone":       APIDefaultZone,
  1536  		"id":         id,
  1537  	}
  1538  
  1539  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/id/{{.id}}", pathBuildParameter)
  1540  	if err != nil {
  1541  		return nil, err
  1542  	}
  1543  	// build request body
  1544  	var body interface{}
  1545  
  1546  	// do request
  1547  	data, err := o.Client.Do(ctx, "GET", url, body)
  1548  	if err != nil {
  1549  		return nil, err
  1550  	}
  1551  
  1552  	// build results
  1553  	results, err := o.transformReadResults(data)
  1554  	if err != nil {
  1555  		return nil, err
  1556  	}
  1557  	return results, err
  1558  }
  1559  
  1560  // Details is API call
  1561  func (o *BillOp) Details(ctx context.Context, MemberCode string, id types.ID) (*BillDetailsResult, error) {
  1562  	// build request URL
  1563  	pathBuildParameter := map[string]interface{}{
  1564  		"rootURL":    SakuraCloudAPIRoot,
  1565  		"pathSuffix": o.PathSuffix,
  1566  		"pathName":   o.PathName,
  1567  		"zone":       APIDefaultZone,
  1568  		"MemberCode": MemberCode,
  1569  		"id":         id,
  1570  	}
  1571  
  1572  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}detail/{{.MemberCode}}/{{.id}}", pathBuildParameter)
  1573  	if err != nil {
  1574  		return nil, err
  1575  	}
  1576  	// build request body
  1577  	var body interface{}
  1578  
  1579  	// do request
  1580  	data, err := o.Client.Do(ctx, "GET", url, body)
  1581  	if err != nil {
  1582  		return nil, err
  1583  	}
  1584  
  1585  	// build results
  1586  	results, err := o.transformDetailsResults(data)
  1587  	if err != nil {
  1588  		return nil, err
  1589  	}
  1590  	return results, err
  1591  }
  1592  
  1593  // DetailsCSV is API call
  1594  func (o *BillOp) DetailsCSV(ctx context.Context, MemberCode string, id types.ID) (*BillDetailCSV, error) {
  1595  	// build request URL
  1596  	pathBuildParameter := map[string]interface{}{
  1597  		"rootURL":    SakuraCloudAPIRoot,
  1598  		"pathSuffix": o.PathSuffix,
  1599  		"pathName":   o.PathName,
  1600  		"zone":       APIDefaultZone,
  1601  		"MemberCode": MemberCode,
  1602  		"id":         id,
  1603  	}
  1604  
  1605  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}detail/{{.MemberCode}}/{{.id}}/csv", pathBuildParameter)
  1606  	if err != nil {
  1607  		return nil, err
  1608  	}
  1609  	// build request body
  1610  	var body interface{}
  1611  
  1612  	// do request
  1613  	data, err := o.Client.Do(ctx, "GET", url, body)
  1614  	if err != nil {
  1615  		return nil, err
  1616  	}
  1617  
  1618  	// build results
  1619  	results, err := o.transformDetailsCSVResults(data)
  1620  	if err != nil {
  1621  		return nil, err
  1622  	}
  1623  	return results.BillDetailCSV, nil
  1624  }
  1625  
  1626  /*************************************************
  1627  * BridgeOp
  1628  *************************************************/
  1629  
  1630  // BridgeOp implements BridgeAPI interface
  1631  type BridgeOp struct {
  1632  	// Client APICaller
  1633  	Client APICaller
  1634  	// PathSuffix is used when building URL
  1635  	PathSuffix string
  1636  	// PathName is used when building URL
  1637  	PathName string
  1638  }
  1639  
  1640  // NewBridgeOp creates new BridgeOp instance
  1641  func NewBridgeOp(caller APICaller) BridgeAPI {
  1642  	return GetClientFactoryFunc("Bridge")(caller).(BridgeAPI)
  1643  }
  1644  
  1645  // Find is API call
  1646  func (o *BridgeOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*BridgeFindResult, error) {
  1647  	// build request URL
  1648  	pathBuildParameter := map[string]interface{}{
  1649  		"rootURL":    SakuraCloudAPIRoot,
  1650  		"pathSuffix": o.PathSuffix,
  1651  		"pathName":   o.PathName,
  1652  		"zone":       zone,
  1653  		"conditions": conditions,
  1654  	}
  1655  
  1656  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1657  	if err != nil {
  1658  		return nil, err
  1659  	}
  1660  	// build request body
  1661  	var body interface{}
  1662  	v, err := o.transformFindArgs(conditions)
  1663  	if err != nil {
  1664  		return nil, err
  1665  	}
  1666  	body = v
  1667  
  1668  	// do request
  1669  	data, err := o.Client.Do(ctx, "GET", url, body)
  1670  	if err != nil {
  1671  		return nil, err
  1672  	}
  1673  
  1674  	// build results
  1675  	results, err := o.transformFindResults(data)
  1676  	if err != nil {
  1677  		return nil, err
  1678  	}
  1679  	return results, err
  1680  }
  1681  
  1682  // Create is API call
  1683  func (o *BridgeOp) Create(ctx context.Context, zone string, param *BridgeCreateRequest) (*Bridge, error) {
  1684  	// build request URL
  1685  	pathBuildParameter := map[string]interface{}{
  1686  		"rootURL":    SakuraCloudAPIRoot,
  1687  		"pathSuffix": o.PathSuffix,
  1688  		"pathName":   o.PathName,
  1689  		"zone":       zone,
  1690  		"param":      param,
  1691  	}
  1692  
  1693  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1694  	if err != nil {
  1695  		return nil, err
  1696  	}
  1697  	// build request body
  1698  	var body interface{}
  1699  	v, err := o.transformCreateArgs(param)
  1700  	if err != nil {
  1701  		return nil, err
  1702  	}
  1703  	body = v
  1704  
  1705  	// do request
  1706  	data, err := o.Client.Do(ctx, "POST", url, body)
  1707  	if err != nil {
  1708  		return nil, err
  1709  	}
  1710  
  1711  	// build results
  1712  	results, err := o.transformCreateResults(data)
  1713  	if err != nil {
  1714  		return nil, err
  1715  	}
  1716  	return results.Bridge, nil
  1717  }
  1718  
  1719  // Read is API call
  1720  func (o *BridgeOp) Read(ctx context.Context, zone string, id types.ID) (*Bridge, error) {
  1721  	// build request URL
  1722  	pathBuildParameter := map[string]interface{}{
  1723  		"rootURL":    SakuraCloudAPIRoot,
  1724  		"pathSuffix": o.PathSuffix,
  1725  		"pathName":   o.PathName,
  1726  		"zone":       zone,
  1727  		"id":         id,
  1728  	}
  1729  
  1730  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1731  	if err != nil {
  1732  		return nil, err
  1733  	}
  1734  	// build request body
  1735  	var body interface{}
  1736  
  1737  	// do request
  1738  	data, err := o.Client.Do(ctx, "GET", url, body)
  1739  	if err != nil {
  1740  		return nil, err
  1741  	}
  1742  
  1743  	// build results
  1744  	results, err := o.transformReadResults(data)
  1745  	if err != nil {
  1746  		return nil, err
  1747  	}
  1748  	return results.Bridge, nil
  1749  }
  1750  
  1751  // Update is API call
  1752  func (o *BridgeOp) Update(ctx context.Context, zone string, id types.ID, param *BridgeUpdateRequest) (*Bridge, error) {
  1753  	// build request URL
  1754  	pathBuildParameter := map[string]interface{}{
  1755  		"rootURL":    SakuraCloudAPIRoot,
  1756  		"pathSuffix": o.PathSuffix,
  1757  		"pathName":   o.PathName,
  1758  		"zone":       zone,
  1759  		"id":         id,
  1760  		"param":      param,
  1761  	}
  1762  
  1763  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1764  	if err != nil {
  1765  		return nil, err
  1766  	}
  1767  	// build request body
  1768  	var body interface{}
  1769  	v, err := o.transformUpdateArgs(id, param)
  1770  	if err != nil {
  1771  		return nil, err
  1772  	}
  1773  	body = v
  1774  
  1775  	// do request
  1776  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1777  	if err != nil {
  1778  		return nil, err
  1779  	}
  1780  
  1781  	// build results
  1782  	results, err := o.transformUpdateResults(data)
  1783  	if err != nil {
  1784  		return nil, err
  1785  	}
  1786  	return results.Bridge, nil
  1787  }
  1788  
  1789  // Delete is API call
  1790  func (o *BridgeOp) Delete(ctx context.Context, zone string, id types.ID) error {
  1791  	// build request URL
  1792  	pathBuildParameter := map[string]interface{}{
  1793  		"rootURL":    SakuraCloudAPIRoot,
  1794  		"pathSuffix": o.PathSuffix,
  1795  		"pathName":   o.PathName,
  1796  		"zone":       zone,
  1797  		"id":         id,
  1798  	}
  1799  
  1800  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1801  	if err != nil {
  1802  		return err
  1803  	}
  1804  	// build request body
  1805  	var body interface{}
  1806  
  1807  	// do request
  1808  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  1809  	if err != nil {
  1810  		return err
  1811  	}
  1812  
  1813  	// build results
  1814  
  1815  	return nil
  1816  }
  1817  
  1818  /*************************************************
  1819  * CDROMOp
  1820  *************************************************/
  1821  
  1822  // CDROMOp implements CDROMAPI interface
  1823  type CDROMOp struct {
  1824  	// Client APICaller
  1825  	Client APICaller
  1826  	// PathSuffix is used when building URL
  1827  	PathSuffix string
  1828  	// PathName is used when building URL
  1829  	PathName string
  1830  }
  1831  
  1832  // NewCDROMOp creates new CDROMOp instance
  1833  func NewCDROMOp(caller APICaller) CDROMAPI {
  1834  	return GetClientFactoryFunc("CDROM")(caller).(CDROMAPI)
  1835  }
  1836  
  1837  // Find is API call
  1838  func (o *CDROMOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*CDROMFindResult, error) {
  1839  	// build request URL
  1840  	pathBuildParameter := map[string]interface{}{
  1841  		"rootURL":    SakuraCloudAPIRoot,
  1842  		"pathSuffix": o.PathSuffix,
  1843  		"pathName":   o.PathName,
  1844  		"zone":       zone,
  1845  		"conditions": conditions,
  1846  	}
  1847  
  1848  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1849  	if err != nil {
  1850  		return nil, err
  1851  	}
  1852  	// build request body
  1853  	var body interface{}
  1854  	v, err := o.transformFindArgs(conditions)
  1855  	if err != nil {
  1856  		return nil, err
  1857  	}
  1858  	body = v
  1859  
  1860  	// do request
  1861  	data, err := o.Client.Do(ctx, "GET", url, body)
  1862  	if err != nil {
  1863  		return nil, err
  1864  	}
  1865  
  1866  	// build results
  1867  	results, err := o.transformFindResults(data)
  1868  	if err != nil {
  1869  		return nil, err
  1870  	}
  1871  	return results, err
  1872  }
  1873  
  1874  // Create is API call
  1875  func (o *CDROMOp) Create(ctx context.Context, zone string, param *CDROMCreateRequest) (*CDROM, *FTPServer, error) {
  1876  	// build request URL
  1877  	pathBuildParameter := map[string]interface{}{
  1878  		"rootURL":    SakuraCloudAPIRoot,
  1879  		"pathSuffix": o.PathSuffix,
  1880  		"pathName":   o.PathName,
  1881  		"zone":       zone,
  1882  		"param":      param,
  1883  	}
  1884  
  1885  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  1886  	if err != nil {
  1887  		return nil, nil, err
  1888  	}
  1889  	// build request body
  1890  	var body interface{}
  1891  	v, err := o.transformCreateArgs(param)
  1892  	if err != nil {
  1893  		return nil, nil, err
  1894  	}
  1895  	body = v
  1896  
  1897  	// do request
  1898  	data, err := o.Client.Do(ctx, "POST", url, body)
  1899  	if err != nil {
  1900  		return nil, nil, err
  1901  	}
  1902  
  1903  	// build results
  1904  	results, err := o.transformCreateResults(data)
  1905  	if err != nil {
  1906  		return nil, nil, err
  1907  	}
  1908  	return results.CDROM, results.FTPServer, nil
  1909  }
  1910  
  1911  // Read is API call
  1912  func (o *CDROMOp) Read(ctx context.Context, zone string, id types.ID) (*CDROM, error) {
  1913  	// build request URL
  1914  	pathBuildParameter := map[string]interface{}{
  1915  		"rootURL":    SakuraCloudAPIRoot,
  1916  		"pathSuffix": o.PathSuffix,
  1917  		"pathName":   o.PathName,
  1918  		"zone":       zone,
  1919  		"id":         id,
  1920  	}
  1921  
  1922  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1923  	if err != nil {
  1924  		return nil, err
  1925  	}
  1926  	// build request body
  1927  	var body interface{}
  1928  
  1929  	// do request
  1930  	data, err := o.Client.Do(ctx, "GET", url, body)
  1931  	if err != nil {
  1932  		return nil, err
  1933  	}
  1934  
  1935  	// build results
  1936  	results, err := o.transformReadResults(data)
  1937  	if err != nil {
  1938  		return nil, err
  1939  	}
  1940  	return results.CDROM, nil
  1941  }
  1942  
  1943  // Update is API call
  1944  func (o *CDROMOp) Update(ctx context.Context, zone string, id types.ID, param *CDROMUpdateRequest) (*CDROM, error) {
  1945  	// build request URL
  1946  	pathBuildParameter := map[string]interface{}{
  1947  		"rootURL":    SakuraCloudAPIRoot,
  1948  		"pathSuffix": o.PathSuffix,
  1949  		"pathName":   o.PathName,
  1950  		"zone":       zone,
  1951  		"id":         id,
  1952  		"param":      param,
  1953  	}
  1954  
  1955  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1956  	if err != nil {
  1957  		return nil, err
  1958  	}
  1959  	// build request body
  1960  	var body interface{}
  1961  	v, err := o.transformUpdateArgs(id, param)
  1962  	if err != nil {
  1963  		return nil, err
  1964  	}
  1965  	body = v
  1966  
  1967  	// do request
  1968  	data, err := o.Client.Do(ctx, "PUT", url, body)
  1969  	if err != nil {
  1970  		return nil, err
  1971  	}
  1972  
  1973  	// build results
  1974  	results, err := o.transformUpdateResults(data)
  1975  	if err != nil {
  1976  		return nil, err
  1977  	}
  1978  	return results.CDROM, nil
  1979  }
  1980  
  1981  // Delete is API call
  1982  func (o *CDROMOp) Delete(ctx context.Context, zone string, id types.ID) error {
  1983  	// build request URL
  1984  	pathBuildParameter := map[string]interface{}{
  1985  		"rootURL":    SakuraCloudAPIRoot,
  1986  		"pathSuffix": o.PathSuffix,
  1987  		"pathName":   o.PathName,
  1988  		"zone":       zone,
  1989  		"id":         id,
  1990  	}
  1991  
  1992  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  1993  	if err != nil {
  1994  		return err
  1995  	}
  1996  	// build request body
  1997  	var body interface{}
  1998  
  1999  	// do request
  2000  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  2001  	if err != nil {
  2002  		return err
  2003  	}
  2004  
  2005  	// build results
  2006  
  2007  	return nil
  2008  }
  2009  
  2010  // OpenFTP is API call
  2011  func (o *CDROMOp) OpenFTP(ctx context.Context, zone string, id types.ID, openOption *OpenFTPRequest) (*FTPServer, error) {
  2012  	// build request URL
  2013  	pathBuildParameter := map[string]interface{}{
  2014  		"rootURL":    SakuraCloudAPIRoot,
  2015  		"pathSuffix": o.PathSuffix,
  2016  		"pathName":   o.PathName,
  2017  		"zone":       zone,
  2018  		"id":         id,
  2019  		"openOption": openOption,
  2020  	}
  2021  
  2022  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ftp", pathBuildParameter)
  2023  	if err != nil {
  2024  		return nil, err
  2025  	}
  2026  	// build request body
  2027  	var body interface{}
  2028  	v, err := o.transformOpenFTPArgs(id, openOption)
  2029  	if err != nil {
  2030  		return nil, err
  2031  	}
  2032  	body = v
  2033  
  2034  	// do request
  2035  	data, err := o.Client.Do(ctx, "PUT", url, body)
  2036  	if err != nil {
  2037  		return nil, err
  2038  	}
  2039  
  2040  	// build results
  2041  	results, err := o.transformOpenFTPResults(data)
  2042  	if err != nil {
  2043  		return nil, err
  2044  	}
  2045  	return results.FTPServer, nil
  2046  }
  2047  
  2048  // CloseFTP is API call
  2049  func (o *CDROMOp) CloseFTP(ctx context.Context, zone string, id types.ID) error {
  2050  	// build request URL
  2051  	pathBuildParameter := map[string]interface{}{
  2052  		"rootURL":    SakuraCloudAPIRoot,
  2053  		"pathSuffix": o.PathSuffix,
  2054  		"pathName":   o.PathName,
  2055  		"zone":       zone,
  2056  		"id":         id,
  2057  	}
  2058  
  2059  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ftp", pathBuildParameter)
  2060  	if err != nil {
  2061  		return err
  2062  	}
  2063  	// build request body
  2064  	var body interface{}
  2065  
  2066  	// do request
  2067  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  2068  	if err != nil {
  2069  		return err
  2070  	}
  2071  
  2072  	// build results
  2073  
  2074  	return nil
  2075  }
  2076  
  2077  /*************************************************
  2078  * CertificateAuthorityOp
  2079  *************************************************/
  2080  
  2081  // CertificateAuthorityOp implements CertificateAuthorityAPI interface
  2082  type CertificateAuthorityOp struct {
  2083  	// Client APICaller
  2084  	Client APICaller
  2085  	// PathSuffix is used when building URL
  2086  	PathSuffix string
  2087  	// PathName is used when building URL
  2088  	PathName string
  2089  }
  2090  
  2091  // NewCertificateAuthorityOp creates new CertificateAuthorityOp instance
  2092  func NewCertificateAuthorityOp(caller APICaller) CertificateAuthorityAPI {
  2093  	return GetClientFactoryFunc("CertificateAuthority")(caller).(CertificateAuthorityAPI)
  2094  }
  2095  
  2096  // Find is API call
  2097  func (o *CertificateAuthorityOp) Find(ctx context.Context, conditions *FindCondition) (*CertificateAuthorityFindResult, error) {
  2098  	// build request URL
  2099  	pathBuildParameter := map[string]interface{}{
  2100  		"rootURL":    SakuraCloudAPIRoot,
  2101  		"pathSuffix": o.PathSuffix,
  2102  		"pathName":   o.PathName,
  2103  		"zone":       APIDefaultZone,
  2104  		"conditions": conditions,
  2105  	}
  2106  
  2107  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  2108  	if err != nil {
  2109  		return nil, err
  2110  	}
  2111  	// build request body
  2112  	var body interface{}
  2113  	v, err := o.transformFindArgs(conditions)
  2114  	if err != nil {
  2115  		return nil, err
  2116  	}
  2117  	body = v
  2118  
  2119  	// do request
  2120  	data, err := o.Client.Do(ctx, "GET", url, body)
  2121  	if err != nil {
  2122  		return nil, err
  2123  	}
  2124  
  2125  	// build results
  2126  	results, err := o.transformFindResults(data)
  2127  	if err != nil {
  2128  		return nil, err
  2129  	}
  2130  	return results, err
  2131  }
  2132  
  2133  // Create is API call
  2134  func (o *CertificateAuthorityOp) Create(ctx context.Context, param *CertificateAuthorityCreateRequest) (*CertificateAuthority, error) {
  2135  	// build request URL
  2136  	pathBuildParameter := map[string]interface{}{
  2137  		"rootURL":    SakuraCloudAPIRoot,
  2138  		"pathSuffix": o.PathSuffix,
  2139  		"pathName":   o.PathName,
  2140  		"zone":       APIDefaultZone,
  2141  		"param":      param,
  2142  	}
  2143  
  2144  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  2145  	if err != nil {
  2146  		return nil, err
  2147  	}
  2148  	// build request body
  2149  	var body interface{}
  2150  	v, err := o.transformCreateArgs(param)
  2151  	if err != nil {
  2152  		return nil, err
  2153  	}
  2154  	body = v
  2155  
  2156  	// do request
  2157  	data, err := o.Client.Do(ctx, "POST", url, body)
  2158  	if err != nil {
  2159  		return nil, err
  2160  	}
  2161  
  2162  	// build results
  2163  	results, err := o.transformCreateResults(data)
  2164  	if err != nil {
  2165  		return nil, err
  2166  	}
  2167  	return results.CertificateAuthority, nil
  2168  }
  2169  
  2170  // Read is API call
  2171  func (o *CertificateAuthorityOp) Read(ctx context.Context, id types.ID) (*CertificateAuthority, error) {
  2172  	// build request URL
  2173  	pathBuildParameter := map[string]interface{}{
  2174  		"rootURL":    SakuraCloudAPIRoot,
  2175  		"pathSuffix": o.PathSuffix,
  2176  		"pathName":   o.PathName,
  2177  		"zone":       APIDefaultZone,
  2178  		"id":         id,
  2179  	}
  2180  
  2181  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2182  	if err != nil {
  2183  		return nil, err
  2184  	}
  2185  	// build request body
  2186  	var body interface{}
  2187  
  2188  	// do request
  2189  	data, err := o.Client.Do(ctx, "GET", url, body)
  2190  	if err != nil {
  2191  		return nil, err
  2192  	}
  2193  
  2194  	// build results
  2195  	results, err := o.transformReadResults(data)
  2196  	if err != nil {
  2197  		return nil, err
  2198  	}
  2199  	return results.CertificateAuthority, nil
  2200  }
  2201  
  2202  // Update is API call
  2203  func (o *CertificateAuthorityOp) Update(ctx context.Context, id types.ID, param *CertificateAuthorityUpdateRequest) (*CertificateAuthority, error) {
  2204  	// build request URL
  2205  	pathBuildParameter := map[string]interface{}{
  2206  		"rootURL":    SakuraCloudAPIRoot,
  2207  		"pathSuffix": o.PathSuffix,
  2208  		"pathName":   o.PathName,
  2209  		"zone":       APIDefaultZone,
  2210  		"id":         id,
  2211  		"param":      param,
  2212  	}
  2213  
  2214  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2215  	if err != nil {
  2216  		return nil, err
  2217  	}
  2218  	// build request body
  2219  	var body interface{}
  2220  	v, err := o.transformUpdateArgs(id, param)
  2221  	if err != nil {
  2222  		return nil, err
  2223  	}
  2224  	body = v
  2225  
  2226  	// do request
  2227  	data, err := o.Client.Do(ctx, "PUT", url, body)
  2228  	if err != nil {
  2229  		return nil, err
  2230  	}
  2231  
  2232  	// build results
  2233  	results, err := o.transformUpdateResults(data)
  2234  	if err != nil {
  2235  		return nil, err
  2236  	}
  2237  	return results.CertificateAuthority, nil
  2238  }
  2239  
  2240  // Delete is API call
  2241  func (o *CertificateAuthorityOp) Delete(ctx context.Context, id types.ID) error {
  2242  	// build request URL
  2243  	pathBuildParameter := map[string]interface{}{
  2244  		"rootURL":    SakuraCloudAPIRoot,
  2245  		"pathSuffix": o.PathSuffix,
  2246  		"pathName":   o.PathName,
  2247  		"zone":       APIDefaultZone,
  2248  		"id":         id,
  2249  	}
  2250  
  2251  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2252  	if err != nil {
  2253  		return err
  2254  	}
  2255  	// build request body
  2256  	var body interface{}
  2257  
  2258  	// do request
  2259  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  2260  	if err != nil {
  2261  		return err
  2262  	}
  2263  
  2264  	// build results
  2265  
  2266  	return nil
  2267  }
  2268  
  2269  // Detail is API call
  2270  func (o *CertificateAuthorityOp) Detail(ctx context.Context, id types.ID) (*CertificateAuthorityDetail, error) {
  2271  	// build request URL
  2272  	pathBuildParameter := map[string]interface{}{
  2273  		"rootURL":    SakuraCloudAPIRoot,
  2274  		"pathSuffix": o.PathSuffix,
  2275  		"pathName":   o.PathName,
  2276  		"zone":       APIDefaultZone,
  2277  		"id":         id,
  2278  	}
  2279  
  2280  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority", pathBuildParameter)
  2281  	if err != nil {
  2282  		return nil, err
  2283  	}
  2284  	// build request body
  2285  	var body interface{}
  2286  
  2287  	// do request
  2288  	data, err := o.Client.Do(ctx, "GET", url, body)
  2289  	if err != nil {
  2290  		return nil, err
  2291  	}
  2292  
  2293  	// build results
  2294  	results, err := o.transformDetailResults(data)
  2295  	if err != nil {
  2296  		return nil, err
  2297  	}
  2298  	return results.CertificateAuthority, nil
  2299  }
  2300  
  2301  // AddClient is API call
  2302  func (o *CertificateAuthorityOp) AddClient(ctx context.Context, id types.ID, param *CertificateAuthorityAddClientParam) (*CertificateAuthorityAddClientOrServerResult, error) {
  2303  	// build request URL
  2304  	pathBuildParameter := map[string]interface{}{
  2305  		"rootURL":    SakuraCloudAPIRoot,
  2306  		"pathSuffix": o.PathSuffix,
  2307  		"pathName":   o.PathName,
  2308  		"zone":       APIDefaultZone,
  2309  		"id":         id,
  2310  		"param":      param,
  2311  	}
  2312  
  2313  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients", pathBuildParameter)
  2314  	if err != nil {
  2315  		return nil, err
  2316  	}
  2317  	// build request body
  2318  	var body interface{}
  2319  	v, err := o.transformAddClientArgs(id, param)
  2320  	if err != nil {
  2321  		return nil, err
  2322  	}
  2323  	body = v
  2324  
  2325  	// do request
  2326  	data, err := o.Client.Do(ctx, "POST", url, body)
  2327  	if err != nil {
  2328  		return nil, err
  2329  	}
  2330  
  2331  	// build results
  2332  	results, err := o.transformAddClientResults(data)
  2333  	if err != nil {
  2334  		return nil, err
  2335  	}
  2336  	return results.CertificateAuthority, nil
  2337  }
  2338  
  2339  // ListClients is API call
  2340  func (o *CertificateAuthorityOp) ListClients(ctx context.Context, id types.ID) (*CertificateAuthorityListClientsResult, error) {
  2341  	// build request URL
  2342  	pathBuildParameter := map[string]interface{}{
  2343  		"rootURL":    SakuraCloudAPIRoot,
  2344  		"pathSuffix": o.PathSuffix,
  2345  		"pathName":   o.PathName,
  2346  		"zone":       APIDefaultZone,
  2347  		"id":         id,
  2348  	}
  2349  
  2350  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients", pathBuildParameter)
  2351  	if err != nil {
  2352  		return nil, err
  2353  	}
  2354  	// build request body
  2355  	var body interface{}
  2356  
  2357  	// do request
  2358  	data, err := o.Client.Do(ctx, "GET", url, body)
  2359  	if err != nil {
  2360  		return nil, err
  2361  	}
  2362  
  2363  	// build results
  2364  	results, err := o.transformListClientsResults(data)
  2365  	if err != nil {
  2366  		return nil, err
  2367  	}
  2368  	return results, err
  2369  }
  2370  
  2371  // ReadClient is API call
  2372  func (o *CertificateAuthorityOp) ReadClient(ctx context.Context, id types.ID, clientID string) (*CertificateAuthorityClient, error) {
  2373  	// build request URL
  2374  	pathBuildParameter := map[string]interface{}{
  2375  		"rootURL":    SakuraCloudAPIRoot,
  2376  		"pathSuffix": o.PathSuffix,
  2377  		"pathName":   o.PathName,
  2378  		"zone":       APIDefaultZone,
  2379  		"id":         id,
  2380  		"clientID":   clientID,
  2381  	}
  2382  
  2383  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients/{{.clientID}}", pathBuildParameter)
  2384  	if err != nil {
  2385  		return nil, err
  2386  	}
  2387  	// build request body
  2388  	var body interface{}
  2389  
  2390  	// do request
  2391  	data, err := o.Client.Do(ctx, "GET", url, body)
  2392  	if err != nil {
  2393  		return nil, err
  2394  	}
  2395  
  2396  	// build results
  2397  	results, err := o.transformReadClientResults(data)
  2398  	if err != nil {
  2399  		return nil, err
  2400  	}
  2401  	return results.CertificateAuthority, nil
  2402  }
  2403  
  2404  // RevokeClient is API call
  2405  func (o *CertificateAuthorityOp) RevokeClient(ctx context.Context, id types.ID, clientID string) error {
  2406  	// build request URL
  2407  	pathBuildParameter := map[string]interface{}{
  2408  		"rootURL":    SakuraCloudAPIRoot,
  2409  		"pathSuffix": o.PathSuffix,
  2410  		"pathName":   o.PathName,
  2411  		"zone":       APIDefaultZone,
  2412  		"id":         id,
  2413  		"clientID":   clientID,
  2414  	}
  2415  
  2416  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients/{{.clientID}}/revoke", pathBuildParameter)
  2417  	if err != nil {
  2418  		return err
  2419  	}
  2420  	// build request body
  2421  	var body interface{}
  2422  
  2423  	// do request
  2424  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2425  	if err != nil {
  2426  		return err
  2427  	}
  2428  
  2429  	// build results
  2430  
  2431  	return nil
  2432  }
  2433  
  2434  // HoldClient is API call
  2435  func (o *CertificateAuthorityOp) HoldClient(ctx context.Context, id types.ID, clientID string) error {
  2436  	// build request URL
  2437  	pathBuildParameter := map[string]interface{}{
  2438  		"rootURL":    SakuraCloudAPIRoot,
  2439  		"pathSuffix": o.PathSuffix,
  2440  		"pathName":   o.PathName,
  2441  		"zone":       APIDefaultZone,
  2442  		"id":         id,
  2443  		"clientID":   clientID,
  2444  	}
  2445  
  2446  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients/{{.clientID}}/hold", pathBuildParameter)
  2447  	if err != nil {
  2448  		return err
  2449  	}
  2450  	// build request body
  2451  	var body interface{}
  2452  
  2453  	// do request
  2454  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2455  	if err != nil {
  2456  		return err
  2457  	}
  2458  
  2459  	// build results
  2460  
  2461  	return nil
  2462  }
  2463  
  2464  // ResumeClient is API call
  2465  func (o *CertificateAuthorityOp) ResumeClient(ctx context.Context, id types.ID, clientID string) error {
  2466  	// build request URL
  2467  	pathBuildParameter := map[string]interface{}{
  2468  		"rootURL":    SakuraCloudAPIRoot,
  2469  		"pathSuffix": o.PathSuffix,
  2470  		"pathName":   o.PathName,
  2471  		"zone":       APIDefaultZone,
  2472  		"id":         id,
  2473  		"clientID":   clientID,
  2474  	}
  2475  
  2476  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients/{{.clientID}}/resume", pathBuildParameter)
  2477  	if err != nil {
  2478  		return err
  2479  	}
  2480  	// build request body
  2481  	var body interface{}
  2482  
  2483  	// do request
  2484  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2485  	if err != nil {
  2486  		return err
  2487  	}
  2488  
  2489  	// build results
  2490  
  2491  	return nil
  2492  }
  2493  
  2494  // DenyClient is API call
  2495  func (o *CertificateAuthorityOp) DenyClient(ctx context.Context, id types.ID, clientID string) error {
  2496  	// build request URL
  2497  	pathBuildParameter := map[string]interface{}{
  2498  		"rootURL":    SakuraCloudAPIRoot,
  2499  		"pathSuffix": o.PathSuffix,
  2500  		"pathName":   o.PathName,
  2501  		"zone":       APIDefaultZone,
  2502  		"id":         id,
  2503  		"clientID":   clientID,
  2504  	}
  2505  
  2506  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/clients/{{.clientID}}/deny", pathBuildParameter)
  2507  	if err != nil {
  2508  		return err
  2509  	}
  2510  	// build request body
  2511  	var body interface{}
  2512  
  2513  	// do request
  2514  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2515  	if err != nil {
  2516  		return err
  2517  	}
  2518  
  2519  	// build results
  2520  
  2521  	return nil
  2522  }
  2523  
  2524  // AddServer is API call
  2525  func (o *CertificateAuthorityOp) AddServer(ctx context.Context, id types.ID, param *CertificateAuthorityAddServerParam) (*CertificateAuthorityAddClientOrServerResult, error) {
  2526  	// build request URL
  2527  	pathBuildParameter := map[string]interface{}{
  2528  		"rootURL":    SakuraCloudAPIRoot,
  2529  		"pathSuffix": o.PathSuffix,
  2530  		"pathName":   o.PathName,
  2531  		"zone":       APIDefaultZone,
  2532  		"id":         id,
  2533  		"param":      param,
  2534  	}
  2535  
  2536  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers", pathBuildParameter)
  2537  	if err != nil {
  2538  		return nil, err
  2539  	}
  2540  	// build request body
  2541  	var body interface{}
  2542  	v, err := o.transformAddServerArgs(id, param)
  2543  	if err != nil {
  2544  		return nil, err
  2545  	}
  2546  	body = v
  2547  
  2548  	// do request
  2549  	data, err := o.Client.Do(ctx, "POST", url, body)
  2550  	if err != nil {
  2551  		return nil, err
  2552  	}
  2553  
  2554  	// build results
  2555  	results, err := o.transformAddServerResults(data)
  2556  	if err != nil {
  2557  		return nil, err
  2558  	}
  2559  	return results.CertificateAuthority, nil
  2560  }
  2561  
  2562  // ListServers is API call
  2563  func (o *CertificateAuthorityOp) ListServers(ctx context.Context, id types.ID) (*CertificateAuthorityListServersResult, error) {
  2564  	// build request URL
  2565  	pathBuildParameter := map[string]interface{}{
  2566  		"rootURL":    SakuraCloudAPIRoot,
  2567  		"pathSuffix": o.PathSuffix,
  2568  		"pathName":   o.PathName,
  2569  		"zone":       APIDefaultZone,
  2570  		"id":         id,
  2571  	}
  2572  
  2573  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers", pathBuildParameter)
  2574  	if err != nil {
  2575  		return nil, err
  2576  	}
  2577  	// build request body
  2578  	var body interface{}
  2579  
  2580  	// do request
  2581  	data, err := o.Client.Do(ctx, "GET", url, body)
  2582  	if err != nil {
  2583  		return nil, err
  2584  	}
  2585  
  2586  	// build results
  2587  	results, err := o.transformListServersResults(data)
  2588  	if err != nil {
  2589  		return nil, err
  2590  	}
  2591  	return results, err
  2592  }
  2593  
  2594  // ReadServer is API call
  2595  func (o *CertificateAuthorityOp) ReadServer(ctx context.Context, id types.ID, serverID string) (*CertificateAuthorityServer, error) {
  2596  	// build request URL
  2597  	pathBuildParameter := map[string]interface{}{
  2598  		"rootURL":    SakuraCloudAPIRoot,
  2599  		"pathSuffix": o.PathSuffix,
  2600  		"pathName":   o.PathName,
  2601  		"zone":       APIDefaultZone,
  2602  		"id":         id,
  2603  		"serverID":   serverID,
  2604  	}
  2605  
  2606  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers/{{.serverID}}", pathBuildParameter)
  2607  	if err != nil {
  2608  		return nil, err
  2609  	}
  2610  	// build request body
  2611  	var body interface{}
  2612  
  2613  	// do request
  2614  	data, err := o.Client.Do(ctx, "GET", url, body)
  2615  	if err != nil {
  2616  		return nil, err
  2617  	}
  2618  
  2619  	// build results
  2620  	results, err := o.transformReadServerResults(data)
  2621  	if err != nil {
  2622  		return nil, err
  2623  	}
  2624  	return results.CertificateAuthority, nil
  2625  }
  2626  
  2627  // RevokeServer is API call
  2628  func (o *CertificateAuthorityOp) RevokeServer(ctx context.Context, id types.ID, serverID string) error {
  2629  	// build request URL
  2630  	pathBuildParameter := map[string]interface{}{
  2631  		"rootURL":    SakuraCloudAPIRoot,
  2632  		"pathSuffix": o.PathSuffix,
  2633  		"pathName":   o.PathName,
  2634  		"zone":       APIDefaultZone,
  2635  		"id":         id,
  2636  		"serverID":   serverID,
  2637  	}
  2638  
  2639  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers/{{.serverID}}/revoke", pathBuildParameter)
  2640  	if err != nil {
  2641  		return err
  2642  	}
  2643  	// build request body
  2644  	var body interface{}
  2645  
  2646  	// do request
  2647  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2648  	if err != nil {
  2649  		return err
  2650  	}
  2651  
  2652  	// build results
  2653  
  2654  	return nil
  2655  }
  2656  
  2657  // HoldServer is API call
  2658  func (o *CertificateAuthorityOp) HoldServer(ctx context.Context, id types.ID, serverID string) error {
  2659  	// build request URL
  2660  	pathBuildParameter := map[string]interface{}{
  2661  		"rootURL":    SakuraCloudAPIRoot,
  2662  		"pathSuffix": o.PathSuffix,
  2663  		"pathName":   o.PathName,
  2664  		"zone":       APIDefaultZone,
  2665  		"id":         id,
  2666  		"serverID":   serverID,
  2667  	}
  2668  
  2669  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers/{{.serverID}}/hold", pathBuildParameter)
  2670  	if err != nil {
  2671  		return err
  2672  	}
  2673  	// build request body
  2674  	var body interface{}
  2675  
  2676  	// do request
  2677  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2678  	if err != nil {
  2679  		return err
  2680  	}
  2681  
  2682  	// build results
  2683  
  2684  	return nil
  2685  }
  2686  
  2687  // ResumeServer is API call
  2688  func (o *CertificateAuthorityOp) ResumeServer(ctx context.Context, id types.ID, serverID string) error {
  2689  	// build request URL
  2690  	pathBuildParameter := map[string]interface{}{
  2691  		"rootURL":    SakuraCloudAPIRoot,
  2692  		"pathSuffix": o.PathSuffix,
  2693  		"pathName":   o.PathName,
  2694  		"zone":       APIDefaultZone,
  2695  		"id":         id,
  2696  		"serverID":   serverID,
  2697  	}
  2698  
  2699  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/certificateauthority/servers/{{.serverID}}/resume", pathBuildParameter)
  2700  	if err != nil {
  2701  		return err
  2702  	}
  2703  	// build request body
  2704  	var body interface{}
  2705  
  2706  	// do request
  2707  	_, err = o.Client.Do(ctx, "PUT", url, body)
  2708  	if err != nil {
  2709  		return err
  2710  	}
  2711  
  2712  	// build results
  2713  
  2714  	return nil
  2715  }
  2716  
  2717  /*************************************************
  2718  * ContainerRegistryOp
  2719  *************************************************/
  2720  
  2721  // ContainerRegistryOp implements ContainerRegistryAPI interface
  2722  type ContainerRegistryOp struct {
  2723  	// Client APICaller
  2724  	Client APICaller
  2725  	// PathSuffix is used when building URL
  2726  	PathSuffix string
  2727  	// PathName is used when building URL
  2728  	PathName string
  2729  }
  2730  
  2731  // NewContainerRegistryOp creates new ContainerRegistryOp instance
  2732  func NewContainerRegistryOp(caller APICaller) ContainerRegistryAPI {
  2733  	return GetClientFactoryFunc("ContainerRegistry")(caller).(ContainerRegistryAPI)
  2734  }
  2735  
  2736  // Find is API call
  2737  func (o *ContainerRegistryOp) Find(ctx context.Context, conditions *FindCondition) (*ContainerRegistryFindResult, error) {
  2738  	// build request URL
  2739  	pathBuildParameter := map[string]interface{}{
  2740  		"rootURL":    SakuraCloudAPIRoot,
  2741  		"pathSuffix": o.PathSuffix,
  2742  		"pathName":   o.PathName,
  2743  		"zone":       APIDefaultZone,
  2744  		"conditions": conditions,
  2745  	}
  2746  
  2747  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  2748  	if err != nil {
  2749  		return nil, err
  2750  	}
  2751  	// build request body
  2752  	var body interface{}
  2753  	v, err := o.transformFindArgs(conditions)
  2754  	if err != nil {
  2755  		return nil, err
  2756  	}
  2757  	body = v
  2758  
  2759  	// do request
  2760  	data, err := o.Client.Do(ctx, "GET", url, body)
  2761  	if err != nil {
  2762  		return nil, err
  2763  	}
  2764  
  2765  	// build results
  2766  	results, err := o.transformFindResults(data)
  2767  	if err != nil {
  2768  		return nil, err
  2769  	}
  2770  	return results, err
  2771  }
  2772  
  2773  // Create is API call
  2774  func (o *ContainerRegistryOp) Create(ctx context.Context, param *ContainerRegistryCreateRequest) (*ContainerRegistry, error) {
  2775  	// build request URL
  2776  	pathBuildParameter := map[string]interface{}{
  2777  		"rootURL":    SakuraCloudAPIRoot,
  2778  		"pathSuffix": o.PathSuffix,
  2779  		"pathName":   o.PathName,
  2780  		"zone":       APIDefaultZone,
  2781  		"param":      param,
  2782  	}
  2783  
  2784  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  2785  	if err != nil {
  2786  		return nil, err
  2787  	}
  2788  	// build request body
  2789  	var body interface{}
  2790  	v, err := o.transformCreateArgs(param)
  2791  	if err != nil {
  2792  		return nil, err
  2793  	}
  2794  	body = v
  2795  
  2796  	// do request
  2797  	data, err := o.Client.Do(ctx, "POST", url, body)
  2798  	if err != nil {
  2799  		return nil, err
  2800  	}
  2801  
  2802  	// build results
  2803  	results, err := o.transformCreateResults(data)
  2804  	if err != nil {
  2805  		return nil, err
  2806  	}
  2807  	return results.ContainerRegistry, nil
  2808  }
  2809  
  2810  // Read is API call
  2811  func (o *ContainerRegistryOp) Read(ctx context.Context, id types.ID) (*ContainerRegistry, error) {
  2812  	// build request URL
  2813  	pathBuildParameter := map[string]interface{}{
  2814  		"rootURL":    SakuraCloudAPIRoot,
  2815  		"pathSuffix": o.PathSuffix,
  2816  		"pathName":   o.PathName,
  2817  		"zone":       APIDefaultZone,
  2818  		"id":         id,
  2819  	}
  2820  
  2821  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2822  	if err != nil {
  2823  		return nil, err
  2824  	}
  2825  	// build request body
  2826  	var body interface{}
  2827  
  2828  	// do request
  2829  	data, err := o.Client.Do(ctx, "GET", url, body)
  2830  	if err != nil {
  2831  		return nil, err
  2832  	}
  2833  
  2834  	// build results
  2835  	results, err := o.transformReadResults(data)
  2836  	if err != nil {
  2837  		return nil, err
  2838  	}
  2839  	return results.ContainerRegistry, nil
  2840  }
  2841  
  2842  // Update is API call
  2843  func (o *ContainerRegistryOp) Update(ctx context.Context, id types.ID, param *ContainerRegistryUpdateRequest) (*ContainerRegistry, error) {
  2844  	// build request URL
  2845  	pathBuildParameter := map[string]interface{}{
  2846  		"rootURL":    SakuraCloudAPIRoot,
  2847  		"pathSuffix": o.PathSuffix,
  2848  		"pathName":   o.PathName,
  2849  		"zone":       APIDefaultZone,
  2850  		"id":         id,
  2851  		"param":      param,
  2852  	}
  2853  
  2854  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2855  	if err != nil {
  2856  		return nil, err
  2857  	}
  2858  	// build request body
  2859  	var body interface{}
  2860  	v, err := o.transformUpdateArgs(id, param)
  2861  	if err != nil {
  2862  		return nil, err
  2863  	}
  2864  	body = v
  2865  
  2866  	// do request
  2867  	data, err := o.Client.Do(ctx, "PUT", url, body)
  2868  	if err != nil {
  2869  		return nil, err
  2870  	}
  2871  
  2872  	// build results
  2873  	results, err := o.transformUpdateResults(data)
  2874  	if err != nil {
  2875  		return nil, err
  2876  	}
  2877  	return results.ContainerRegistry, nil
  2878  }
  2879  
  2880  // UpdateSettings is API call
  2881  func (o *ContainerRegistryOp) UpdateSettings(ctx context.Context, id types.ID, param *ContainerRegistryUpdateSettingsRequest) (*ContainerRegistry, error) {
  2882  	// build request URL
  2883  	pathBuildParameter := map[string]interface{}{
  2884  		"rootURL":    SakuraCloudAPIRoot,
  2885  		"pathSuffix": o.PathSuffix,
  2886  		"pathName":   o.PathName,
  2887  		"zone":       APIDefaultZone,
  2888  		"id":         id,
  2889  		"param":      param,
  2890  	}
  2891  
  2892  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2893  	if err != nil {
  2894  		return nil, err
  2895  	}
  2896  	// build request body
  2897  	var body interface{}
  2898  	v, err := o.transformUpdateSettingsArgs(id, param)
  2899  	if err != nil {
  2900  		return nil, err
  2901  	}
  2902  	body = v
  2903  
  2904  	// do request
  2905  	data, err := o.Client.Do(ctx, "PUT", url, body)
  2906  	if err != nil {
  2907  		return nil, err
  2908  	}
  2909  
  2910  	// build results
  2911  	results, err := o.transformUpdateSettingsResults(data)
  2912  	if err != nil {
  2913  		return nil, err
  2914  	}
  2915  	return results.ContainerRegistry, nil
  2916  }
  2917  
  2918  // Delete is API call
  2919  func (o *ContainerRegistryOp) Delete(ctx context.Context, id types.ID) error {
  2920  	// build request URL
  2921  	pathBuildParameter := map[string]interface{}{
  2922  		"rootURL":    SakuraCloudAPIRoot,
  2923  		"pathSuffix": o.PathSuffix,
  2924  		"pathName":   o.PathName,
  2925  		"zone":       APIDefaultZone,
  2926  		"id":         id,
  2927  	}
  2928  
  2929  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  2930  	if err != nil {
  2931  		return err
  2932  	}
  2933  	// build request body
  2934  	var body interface{}
  2935  
  2936  	// do request
  2937  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  2938  	if err != nil {
  2939  		return err
  2940  	}
  2941  
  2942  	// build results
  2943  
  2944  	return nil
  2945  }
  2946  
  2947  // ListUsers is API call
  2948  func (o *ContainerRegistryOp) ListUsers(ctx context.Context, id types.ID) (*ContainerRegistryUsers, error) {
  2949  	// build request URL
  2950  	pathBuildParameter := map[string]interface{}{
  2951  		"rootURL":    SakuraCloudAPIRoot,
  2952  		"pathSuffix": o.PathSuffix,
  2953  		"pathName":   o.PathName,
  2954  		"zone":       APIDefaultZone,
  2955  		"id":         id,
  2956  	}
  2957  
  2958  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/containerregistry/users", pathBuildParameter)
  2959  	if err != nil {
  2960  		return nil, err
  2961  	}
  2962  	// build request body
  2963  	var body interface{}
  2964  
  2965  	// do request
  2966  	data, err := o.Client.Do(ctx, "GET", url, body)
  2967  	if err != nil {
  2968  		return nil, err
  2969  	}
  2970  
  2971  	// build results
  2972  	results, err := o.transformListUsersResults(data)
  2973  	if err != nil {
  2974  		return nil, err
  2975  	}
  2976  	return results.ContainerRegistryUsers, nil
  2977  }
  2978  
  2979  // AddUser is API call
  2980  func (o *ContainerRegistryOp) AddUser(ctx context.Context, id types.ID, param *ContainerRegistryUserCreateRequest) error {
  2981  	// build request URL
  2982  	pathBuildParameter := map[string]interface{}{
  2983  		"rootURL":    SakuraCloudAPIRoot,
  2984  		"pathSuffix": o.PathSuffix,
  2985  		"pathName":   o.PathName,
  2986  		"zone":       APIDefaultZone,
  2987  		"id":         id,
  2988  		"param":      param,
  2989  	}
  2990  
  2991  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/containerregistry/users", pathBuildParameter)
  2992  	if err != nil {
  2993  		return err
  2994  	}
  2995  	// build request body
  2996  	var body interface{}
  2997  	v, err := o.transformAddUserArgs(id, param)
  2998  	if err != nil {
  2999  		return err
  3000  	}
  3001  	body = v
  3002  
  3003  	// do request
  3004  	_, err = o.Client.Do(ctx, "POST", url, body)
  3005  	if err != nil {
  3006  		return err
  3007  	}
  3008  
  3009  	// build results
  3010  
  3011  	return nil
  3012  }
  3013  
  3014  // UpdateUser is API call
  3015  func (o *ContainerRegistryOp) UpdateUser(ctx context.Context, id types.ID, username string, param *ContainerRegistryUserUpdateRequest) error {
  3016  	// build request URL
  3017  	pathBuildParameter := map[string]interface{}{
  3018  		"rootURL":    SakuraCloudAPIRoot,
  3019  		"pathSuffix": o.PathSuffix,
  3020  		"pathName":   o.PathName,
  3021  		"zone":       APIDefaultZone,
  3022  		"id":         id,
  3023  		"username":   username,
  3024  		"param":      param,
  3025  	}
  3026  
  3027  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/containerregistry/users/{{.username}}", pathBuildParameter)
  3028  	if err != nil {
  3029  		return err
  3030  	}
  3031  	// build request body
  3032  	var body interface{}
  3033  	v, err := o.transformUpdateUserArgs(id, username, param)
  3034  	if err != nil {
  3035  		return err
  3036  	}
  3037  	body = v
  3038  
  3039  	// do request
  3040  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3041  	if err != nil {
  3042  		return err
  3043  	}
  3044  
  3045  	// build results
  3046  
  3047  	return nil
  3048  }
  3049  
  3050  // DeleteUser is API call
  3051  func (o *ContainerRegistryOp) DeleteUser(ctx context.Context, id types.ID, username string) error {
  3052  	// build request URL
  3053  	pathBuildParameter := map[string]interface{}{
  3054  		"rootURL":    SakuraCloudAPIRoot,
  3055  		"pathSuffix": o.PathSuffix,
  3056  		"pathName":   o.PathName,
  3057  		"zone":       APIDefaultZone,
  3058  		"id":         id,
  3059  		"username":   username,
  3060  	}
  3061  
  3062  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/containerregistry/users/{{.username}}", pathBuildParameter)
  3063  	if err != nil {
  3064  		return err
  3065  	}
  3066  	// build request body
  3067  	var body interface{}
  3068  
  3069  	// do request
  3070  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  3071  	if err != nil {
  3072  		return err
  3073  	}
  3074  
  3075  	// build results
  3076  
  3077  	return nil
  3078  }
  3079  
  3080  /*************************************************
  3081  * CouponOp
  3082  *************************************************/
  3083  
  3084  // CouponOp implements CouponAPI interface
  3085  type CouponOp struct {
  3086  	// Client APICaller
  3087  	Client APICaller
  3088  	// PathSuffix is used when building URL
  3089  	PathSuffix string
  3090  	// PathName is used when building URL
  3091  	PathName string
  3092  }
  3093  
  3094  // NewCouponOp creates new CouponOp instance
  3095  func NewCouponOp(caller APICaller) CouponAPI {
  3096  	return GetClientFactoryFunc("Coupon")(caller).(CouponAPI)
  3097  }
  3098  
  3099  // Find is API call
  3100  func (o *CouponOp) Find(ctx context.Context, accountID types.ID) (*CouponFindResult, error) {
  3101  	// build request URL
  3102  	pathBuildParameter := map[string]interface{}{
  3103  		"rootURL":    SakuraCloudAPIRoot,
  3104  		"pathSuffix": o.PathSuffix,
  3105  		"pathName":   o.PathName,
  3106  		"zone":       APIDefaultZone,
  3107  		"accountID":  accountID,
  3108  	}
  3109  
  3110  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.accountID}}", pathBuildParameter)
  3111  	if err != nil {
  3112  		return nil, err
  3113  	}
  3114  	// build request body
  3115  	var body interface{}
  3116  
  3117  	// do request
  3118  	data, err := o.Client.Do(ctx, "GET", url, body)
  3119  	if err != nil {
  3120  		return nil, err
  3121  	}
  3122  
  3123  	// build results
  3124  	results, err := o.transformFindResults(data)
  3125  	if err != nil {
  3126  		return nil, err
  3127  	}
  3128  	return results, err
  3129  }
  3130  
  3131  /*************************************************
  3132  * DatabaseOp
  3133  *************************************************/
  3134  
  3135  // DatabaseOp implements DatabaseAPI interface
  3136  type DatabaseOp struct {
  3137  	// Client APICaller
  3138  	Client APICaller
  3139  	// PathSuffix is used when building URL
  3140  	PathSuffix string
  3141  	// PathName is used when building URL
  3142  	PathName string
  3143  }
  3144  
  3145  // NewDatabaseOp creates new DatabaseOp instance
  3146  func NewDatabaseOp(caller APICaller) DatabaseAPI {
  3147  	return GetClientFactoryFunc("Database")(caller).(DatabaseAPI)
  3148  }
  3149  
  3150  // Find is API call
  3151  func (o *DatabaseOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*DatabaseFindResult, error) {
  3152  	// build request URL
  3153  	pathBuildParameter := map[string]interface{}{
  3154  		"rootURL":    SakuraCloudAPIRoot,
  3155  		"pathSuffix": o.PathSuffix,
  3156  		"pathName":   o.PathName,
  3157  		"zone":       zone,
  3158  		"conditions": conditions,
  3159  	}
  3160  
  3161  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  3162  	if err != nil {
  3163  		return nil, err
  3164  	}
  3165  	// build request body
  3166  	var body interface{}
  3167  	v, err := o.transformFindArgs(conditions)
  3168  	if err != nil {
  3169  		return nil, err
  3170  	}
  3171  	body = v
  3172  
  3173  	// do request
  3174  	data, err := o.Client.Do(ctx, "GET", url, body)
  3175  	if err != nil {
  3176  		return nil, err
  3177  	}
  3178  
  3179  	// build results
  3180  	results, err := o.transformFindResults(data)
  3181  	if err != nil {
  3182  		return nil, err
  3183  	}
  3184  	return results, err
  3185  }
  3186  
  3187  // Create is API call
  3188  func (o *DatabaseOp) Create(ctx context.Context, zone string, param *DatabaseCreateRequest) (*Database, error) {
  3189  	// build request URL
  3190  	pathBuildParameter := map[string]interface{}{
  3191  		"rootURL":    SakuraCloudAPIRoot,
  3192  		"pathSuffix": o.PathSuffix,
  3193  		"pathName":   o.PathName,
  3194  		"zone":       zone,
  3195  		"param":      param,
  3196  	}
  3197  
  3198  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  3199  	if err != nil {
  3200  		return nil, err
  3201  	}
  3202  	// build request body
  3203  	var body interface{}
  3204  	v, err := o.transformCreateArgs(param)
  3205  	if err != nil {
  3206  		return nil, err
  3207  	}
  3208  	body = v
  3209  
  3210  	// do request
  3211  	data, err := o.Client.Do(ctx, "POST", url, body)
  3212  	if err != nil {
  3213  		return nil, err
  3214  	}
  3215  
  3216  	// build results
  3217  	results, err := o.transformCreateResults(data)
  3218  	if err != nil {
  3219  		return nil, err
  3220  	}
  3221  	return results.Database, nil
  3222  }
  3223  
  3224  // Read is API call
  3225  func (o *DatabaseOp) Read(ctx context.Context, zone string, id types.ID) (*Database, error) {
  3226  	// build request URL
  3227  	pathBuildParameter := map[string]interface{}{
  3228  		"rootURL":    SakuraCloudAPIRoot,
  3229  		"pathSuffix": o.PathSuffix,
  3230  		"pathName":   o.PathName,
  3231  		"zone":       zone,
  3232  		"id":         id,
  3233  	}
  3234  
  3235  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  3236  	if err != nil {
  3237  		return nil, err
  3238  	}
  3239  	// build request body
  3240  	var body interface{}
  3241  
  3242  	// do request
  3243  	data, err := o.Client.Do(ctx, "GET", url, body)
  3244  	if err != nil {
  3245  		return nil, err
  3246  	}
  3247  
  3248  	// build results
  3249  	results, err := o.transformReadResults(data)
  3250  	if err != nil {
  3251  		return nil, err
  3252  	}
  3253  	return results.Database, nil
  3254  }
  3255  
  3256  // Update is API call
  3257  func (o *DatabaseOp) Update(ctx context.Context, zone string, id types.ID, param *DatabaseUpdateRequest) (*Database, error) {
  3258  	// build request URL
  3259  	pathBuildParameter := map[string]interface{}{
  3260  		"rootURL":    SakuraCloudAPIRoot,
  3261  		"pathSuffix": o.PathSuffix,
  3262  		"pathName":   o.PathName,
  3263  		"zone":       zone,
  3264  		"id":         id,
  3265  		"param":      param,
  3266  	}
  3267  
  3268  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  3269  	if err != nil {
  3270  		return nil, err
  3271  	}
  3272  	// build request body
  3273  	var body interface{}
  3274  	v, err := o.transformUpdateArgs(id, param)
  3275  	if err != nil {
  3276  		return nil, err
  3277  	}
  3278  	body = v
  3279  
  3280  	// do request
  3281  	data, err := o.Client.Do(ctx, "PUT", url, body)
  3282  	if err != nil {
  3283  		return nil, err
  3284  	}
  3285  
  3286  	// build results
  3287  	results, err := o.transformUpdateResults(data)
  3288  	if err != nil {
  3289  		return nil, err
  3290  	}
  3291  	return results.Database, nil
  3292  }
  3293  
  3294  // UpdateSettings is API call
  3295  func (o *DatabaseOp) UpdateSettings(ctx context.Context, zone string, id types.ID, param *DatabaseUpdateSettingsRequest) (*Database, error) {
  3296  	// build request URL
  3297  	pathBuildParameter := map[string]interface{}{
  3298  		"rootURL":    SakuraCloudAPIRoot,
  3299  		"pathSuffix": o.PathSuffix,
  3300  		"pathName":   o.PathName,
  3301  		"zone":       zone,
  3302  		"id":         id,
  3303  		"param":      param,
  3304  	}
  3305  
  3306  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  3307  	if err != nil {
  3308  		return nil, err
  3309  	}
  3310  	// build request body
  3311  	var body interface{}
  3312  	v, err := o.transformUpdateSettingsArgs(id, param)
  3313  	if err != nil {
  3314  		return nil, err
  3315  	}
  3316  	body = v
  3317  
  3318  	// do request
  3319  	data, err := o.Client.Do(ctx, "PUT", url, body)
  3320  	if err != nil {
  3321  		return nil, err
  3322  	}
  3323  
  3324  	// build results
  3325  	results, err := o.transformUpdateSettingsResults(data)
  3326  	if err != nil {
  3327  		return nil, err
  3328  	}
  3329  	return results.Database, nil
  3330  }
  3331  
  3332  // Delete is API call
  3333  func (o *DatabaseOp) Delete(ctx context.Context, zone string, id types.ID) error {
  3334  	// build request URL
  3335  	pathBuildParameter := map[string]interface{}{
  3336  		"rootURL":    SakuraCloudAPIRoot,
  3337  		"pathSuffix": o.PathSuffix,
  3338  		"pathName":   o.PathName,
  3339  		"zone":       zone,
  3340  		"id":         id,
  3341  	}
  3342  
  3343  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  3344  	if err != nil {
  3345  		return err
  3346  	}
  3347  	// build request body
  3348  	var body interface{}
  3349  
  3350  	// do request
  3351  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  3352  	if err != nil {
  3353  		return err
  3354  	}
  3355  
  3356  	// build results
  3357  
  3358  	return nil
  3359  }
  3360  
  3361  // Config is API call
  3362  func (o *DatabaseOp) Config(ctx context.Context, zone string, id types.ID) error {
  3363  	// build request URL
  3364  	pathBuildParameter := map[string]interface{}{
  3365  		"rootURL":    SakuraCloudAPIRoot,
  3366  		"pathSuffix": o.PathSuffix,
  3367  		"pathName":   o.PathName,
  3368  		"zone":       zone,
  3369  		"id":         id,
  3370  	}
  3371  
  3372  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/config", pathBuildParameter)
  3373  	if err != nil {
  3374  		return err
  3375  	}
  3376  	// build request body
  3377  	var body interface{}
  3378  
  3379  	// do request
  3380  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3381  	if err != nil {
  3382  		return err
  3383  	}
  3384  
  3385  	// build results
  3386  
  3387  	return nil
  3388  }
  3389  
  3390  // Boot is API call
  3391  func (o *DatabaseOp) Boot(ctx context.Context, zone string, id types.ID) error {
  3392  	// build request URL
  3393  	pathBuildParameter := map[string]interface{}{
  3394  		"rootURL":    SakuraCloudAPIRoot,
  3395  		"pathSuffix": o.PathSuffix,
  3396  		"pathName":   o.PathName,
  3397  		"zone":       zone,
  3398  		"id":         id,
  3399  	}
  3400  
  3401  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  3402  	if err != nil {
  3403  		return err
  3404  	}
  3405  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  3406  	if err != nil {
  3407  		return err
  3408  	}
  3409  	apiLocker.Lock(lockKey)
  3410  	defer apiLocker.Unlock(lockKey)
  3411  	// build request body
  3412  	var body interface{}
  3413  
  3414  	// do request
  3415  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3416  	if err != nil {
  3417  		return err
  3418  	}
  3419  
  3420  	// build results
  3421  
  3422  	return nil
  3423  }
  3424  
  3425  // Shutdown is API call
  3426  func (o *DatabaseOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
  3427  	// build request URL
  3428  	pathBuildParameter := map[string]interface{}{
  3429  		"rootURL":        SakuraCloudAPIRoot,
  3430  		"pathSuffix":     o.PathSuffix,
  3431  		"pathName":       o.PathName,
  3432  		"zone":           zone,
  3433  		"id":             id,
  3434  		"shutdownOption": shutdownOption,
  3435  	}
  3436  
  3437  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  3438  	if err != nil {
  3439  		return err
  3440  	}
  3441  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  3442  	if err != nil {
  3443  		return err
  3444  	}
  3445  	apiLocker.Lock(lockKey)
  3446  	defer apiLocker.Unlock(lockKey)
  3447  	// build request body
  3448  	var body interface{}
  3449  	v, err := o.transformShutdownArgs(id, shutdownOption)
  3450  	if err != nil {
  3451  		return err
  3452  	}
  3453  	body = v
  3454  
  3455  	// do request
  3456  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  3457  	if err != nil {
  3458  		return err
  3459  	}
  3460  
  3461  	// build results
  3462  
  3463  	return nil
  3464  }
  3465  
  3466  // Reset is API call
  3467  func (o *DatabaseOp) Reset(ctx context.Context, zone string, id types.ID) error {
  3468  	// build request URL
  3469  	pathBuildParameter := map[string]interface{}{
  3470  		"rootURL":    SakuraCloudAPIRoot,
  3471  		"pathSuffix": o.PathSuffix,
  3472  		"pathName":   o.PathName,
  3473  		"zone":       zone,
  3474  		"id":         id,
  3475  	}
  3476  
  3477  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
  3478  	if err != nil {
  3479  		return err
  3480  	}
  3481  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  3482  	if err != nil {
  3483  		return err
  3484  	}
  3485  	apiLocker.Lock(lockKey)
  3486  	defer apiLocker.Unlock(lockKey)
  3487  	// build request body
  3488  	var body interface{}
  3489  
  3490  	// do request
  3491  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3492  	if err != nil {
  3493  		return err
  3494  	}
  3495  
  3496  	// build results
  3497  
  3498  	return nil
  3499  }
  3500  
  3501  // MonitorCPU is API call
  3502  func (o *DatabaseOp) MonitorCPU(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
  3503  	// build request URL
  3504  	pathBuildParameter := map[string]interface{}{
  3505  		"rootURL":    SakuraCloudAPIRoot,
  3506  		"pathSuffix": o.PathSuffix,
  3507  		"pathName":   o.PathName,
  3508  		"zone":       zone,
  3509  		"id":         id,
  3510  		"condition":  condition,
  3511  	}
  3512  
  3513  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cpu/monitor", pathBuildParameter)
  3514  	if err != nil {
  3515  		return nil, err
  3516  	}
  3517  	// build request body
  3518  	var body interface{}
  3519  	v, err := o.transformMonitorCPUArgs(id, condition)
  3520  	if err != nil {
  3521  		return nil, err
  3522  	}
  3523  	body = v
  3524  
  3525  	// do request
  3526  	data, err := o.Client.Do(ctx, "GET", url, body)
  3527  	if err != nil {
  3528  		return nil, err
  3529  	}
  3530  
  3531  	// build results
  3532  	results, err := o.transformMonitorCPUResults(data)
  3533  	if err != nil {
  3534  		return nil, err
  3535  	}
  3536  	return results.CPUTimeActivity, nil
  3537  }
  3538  
  3539  // MonitorDisk is API call
  3540  func (o *DatabaseOp) MonitorDisk(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*DiskActivity, error) {
  3541  	// build request URL
  3542  	pathBuildParameter := map[string]interface{}{
  3543  		"rootURL":    SakuraCloudAPIRoot,
  3544  		"pathSuffix": o.PathSuffix,
  3545  		"pathName":   o.PathName,
  3546  		"zone":       zone,
  3547  		"id":         id,
  3548  		"condition":  condition,
  3549  	}
  3550  
  3551  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/disk/0/monitor", pathBuildParameter)
  3552  	if err != nil {
  3553  		return nil, err
  3554  	}
  3555  	// build request body
  3556  	var body interface{}
  3557  	v, err := o.transformMonitorDiskArgs(id, condition)
  3558  	if err != nil {
  3559  		return nil, err
  3560  	}
  3561  	body = v
  3562  
  3563  	// do request
  3564  	data, err := o.Client.Do(ctx, "GET", url, body)
  3565  	if err != nil {
  3566  		return nil, err
  3567  	}
  3568  
  3569  	// build results
  3570  	results, err := o.transformMonitorDiskResults(data)
  3571  	if err != nil {
  3572  		return nil, err
  3573  	}
  3574  	return results.DiskActivity, nil
  3575  }
  3576  
  3577  // MonitorInterface is API call
  3578  func (o *DatabaseOp) MonitorInterface(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*InterfaceActivity, error) {
  3579  	// build request URL
  3580  	pathBuildParameter := map[string]interface{}{
  3581  		"rootURL":    SakuraCloudAPIRoot,
  3582  		"pathSuffix": o.PathSuffix,
  3583  		"pathName":   o.PathName,
  3584  		"zone":       zone,
  3585  		"id":         id,
  3586  		"condition":  condition,
  3587  	}
  3588  
  3589  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/monitor", pathBuildParameter)
  3590  	if err != nil {
  3591  		return nil, err
  3592  	}
  3593  	// build request body
  3594  	var body interface{}
  3595  	v, err := o.transformMonitorInterfaceArgs(id, condition)
  3596  	if err != nil {
  3597  		return nil, err
  3598  	}
  3599  	body = v
  3600  
  3601  	// do request
  3602  	data, err := o.Client.Do(ctx, "GET", url, body)
  3603  	if err != nil {
  3604  		return nil, err
  3605  	}
  3606  
  3607  	// build results
  3608  	results, err := o.transformMonitorInterfaceResults(data)
  3609  	if err != nil {
  3610  		return nil, err
  3611  	}
  3612  	return results.InterfaceActivity, nil
  3613  }
  3614  
  3615  // MonitorDatabase is API call
  3616  func (o *DatabaseOp) MonitorDatabase(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*DatabaseActivity, error) {
  3617  	// build request URL
  3618  	pathBuildParameter := map[string]interface{}{
  3619  		"rootURL":    SakuraCloudAPIRoot,
  3620  		"pathSuffix": o.PathSuffix,
  3621  		"pathName":   o.PathName,
  3622  		"zone":       zone,
  3623  		"id":         id,
  3624  		"condition":  condition,
  3625  	}
  3626  
  3627  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/database/monitor", pathBuildParameter)
  3628  	if err != nil {
  3629  		return nil, err
  3630  	}
  3631  	// build request body
  3632  	var body interface{}
  3633  	v, err := o.transformMonitorDatabaseArgs(id, condition)
  3634  	if err != nil {
  3635  		return nil, err
  3636  	}
  3637  	body = v
  3638  
  3639  	// do request
  3640  	data, err := o.Client.Do(ctx, "GET", url, body)
  3641  	if err != nil {
  3642  		return nil, err
  3643  	}
  3644  
  3645  	// build results
  3646  	results, err := o.transformMonitorDatabaseResults(data)
  3647  	if err != nil {
  3648  		return nil, err
  3649  	}
  3650  	return results.DatabaseActivity, nil
  3651  }
  3652  
  3653  // Status is API call
  3654  func (o *DatabaseOp) Status(ctx context.Context, zone string, id types.ID) (*DatabaseStatus, error) {
  3655  	// build request URL
  3656  	pathBuildParameter := map[string]interface{}{
  3657  		"rootURL":    SakuraCloudAPIRoot,
  3658  		"pathSuffix": o.PathSuffix,
  3659  		"pathName":   o.PathName,
  3660  		"zone":       zone,
  3661  		"id":         id,
  3662  	}
  3663  
  3664  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/status", pathBuildParameter)
  3665  	if err != nil {
  3666  		return nil, err
  3667  	}
  3668  	// build request body
  3669  	var body interface{}
  3670  
  3671  	// do request
  3672  	data, err := o.Client.Do(ctx, "GET", url, body)
  3673  	if err != nil {
  3674  		return nil, err
  3675  	}
  3676  
  3677  	// build results
  3678  	results, err := o.transformStatusResults(data)
  3679  	if err != nil {
  3680  		return nil, err
  3681  	}
  3682  	return results.DatabaseStatus, nil
  3683  }
  3684  
  3685  // GetParameter is API call
  3686  func (o *DatabaseOp) GetParameter(ctx context.Context, zone string, id types.ID) (*DatabaseParameter, error) {
  3687  	// build request URL
  3688  	pathBuildParameter := map[string]interface{}{
  3689  		"rootURL":    SakuraCloudAPIRoot,
  3690  		"pathSuffix": o.PathSuffix,
  3691  		"pathName":   o.PathName,
  3692  		"zone":       zone,
  3693  		"id":         id,
  3694  	}
  3695  
  3696  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/database/parameter", pathBuildParameter)
  3697  	if err != nil {
  3698  		return nil, err
  3699  	}
  3700  	// build request body
  3701  	var body interface{}
  3702  
  3703  	// do request
  3704  	data, err := o.Client.Do(ctx, "GET", url, body)
  3705  	if err != nil {
  3706  		return nil, err
  3707  	}
  3708  
  3709  	// build results
  3710  	results, err := o.transformGetParameterResults(data)
  3711  	if err != nil {
  3712  		return nil, err
  3713  	}
  3714  	return results.DatabaseParameter, nil
  3715  }
  3716  
  3717  // SetParameter is API call
  3718  func (o *DatabaseOp) SetParameter(ctx context.Context, zone string, id types.ID, param map[string]interface{}) error {
  3719  	// build request URL
  3720  	pathBuildParameter := map[string]interface{}{
  3721  		"rootURL":    SakuraCloudAPIRoot,
  3722  		"pathSuffix": o.PathSuffix,
  3723  		"pathName":   o.PathName,
  3724  		"zone":       zone,
  3725  		"id":         id,
  3726  		"param":      param,
  3727  	}
  3728  
  3729  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/database/parameter", pathBuildParameter)
  3730  	if err != nil {
  3731  		return err
  3732  	}
  3733  	// build request body
  3734  	var body interface{}
  3735  	v, err := o.transformSetParameterArgs(id, param)
  3736  	if err != nil {
  3737  		return err
  3738  	}
  3739  	body = v
  3740  
  3741  	// do request
  3742  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3743  	if err != nil {
  3744  		return err
  3745  	}
  3746  
  3747  	// build results
  3748  
  3749  	return nil
  3750  }
  3751  
  3752  /*************************************************
  3753  * DiskOp
  3754  *************************************************/
  3755  
  3756  // DiskOp implements DiskAPI interface
  3757  type DiskOp struct {
  3758  	// Client APICaller
  3759  	Client APICaller
  3760  	// PathSuffix is used when building URL
  3761  	PathSuffix string
  3762  	// PathName is used when building URL
  3763  	PathName string
  3764  }
  3765  
  3766  // NewDiskOp creates new DiskOp instance
  3767  func NewDiskOp(caller APICaller) DiskAPI {
  3768  	return GetClientFactoryFunc("Disk")(caller).(DiskAPI)
  3769  }
  3770  
  3771  // Find is API call
  3772  func (o *DiskOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*DiskFindResult, error) {
  3773  	// build request URL
  3774  	pathBuildParameter := map[string]interface{}{
  3775  		"rootURL":    SakuraCloudAPIRoot,
  3776  		"pathSuffix": o.PathSuffix,
  3777  		"pathName":   o.PathName,
  3778  		"zone":       zone,
  3779  		"conditions": conditions,
  3780  	}
  3781  
  3782  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  3783  	if err != nil {
  3784  		return nil, err
  3785  	}
  3786  	// build request body
  3787  	var body interface{}
  3788  	v, err := o.transformFindArgs(conditions)
  3789  	if err != nil {
  3790  		return nil, err
  3791  	}
  3792  	body = v
  3793  
  3794  	// do request
  3795  	data, err := o.Client.Do(ctx, "GET", url, body)
  3796  	if err != nil {
  3797  		return nil, err
  3798  	}
  3799  
  3800  	// build results
  3801  	results, err := o.transformFindResults(data)
  3802  	if err != nil {
  3803  		return nil, err
  3804  	}
  3805  	return results, err
  3806  }
  3807  
  3808  // Create is API call
  3809  func (o *DiskOp) Create(ctx context.Context, zone string, createParam *DiskCreateRequest, distantFrom []types.ID) (*Disk, error) {
  3810  	// build request URL
  3811  	pathBuildParameter := map[string]interface{}{
  3812  		"rootURL":     SakuraCloudAPIRoot,
  3813  		"pathSuffix":  o.PathSuffix,
  3814  		"pathName":    o.PathName,
  3815  		"zone":        zone,
  3816  		"createParam": createParam,
  3817  		"distantFrom": distantFrom,
  3818  	}
  3819  
  3820  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  3821  	if err != nil {
  3822  		return nil, err
  3823  	}
  3824  	// build request body
  3825  	var body interface{}
  3826  	v, err := o.transformCreateArgs(createParam, distantFrom)
  3827  	if err != nil {
  3828  		return nil, err
  3829  	}
  3830  	body = v
  3831  
  3832  	// do request
  3833  	data, err := o.Client.Do(ctx, "POST", url, body)
  3834  	if err != nil {
  3835  		return nil, err
  3836  	}
  3837  
  3838  	// build results
  3839  	results, err := o.transformCreateResults(data)
  3840  	if err != nil {
  3841  		return nil, err
  3842  	}
  3843  	return results.Disk, nil
  3844  }
  3845  
  3846  // Config is API call
  3847  func (o *DiskOp) Config(ctx context.Context, zone string, id types.ID, edit *DiskEditRequest) error {
  3848  	// build request URL
  3849  	pathBuildParameter := map[string]interface{}{
  3850  		"rootURL":    SakuraCloudAPIRoot,
  3851  		"pathSuffix": o.PathSuffix,
  3852  		"pathName":   o.PathName,
  3853  		"zone":       zone,
  3854  		"id":         id,
  3855  		"edit":       edit,
  3856  	}
  3857  
  3858  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/config", pathBuildParameter)
  3859  	if err != nil {
  3860  		return err
  3861  	}
  3862  	// build request body
  3863  	var body interface{}
  3864  	v, err := o.transformConfigArgs(id, edit)
  3865  	if err != nil {
  3866  		return err
  3867  	}
  3868  	body = v
  3869  
  3870  	// do request
  3871  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3872  	if err != nil {
  3873  		return err
  3874  	}
  3875  
  3876  	// build results
  3877  
  3878  	return nil
  3879  }
  3880  
  3881  // CreateWithConfig is API call
  3882  func (o *DiskOp) CreateWithConfig(ctx context.Context, zone string, createParam *DiskCreateRequest, editParam *DiskEditRequest, bootAtAvailable bool, distantFrom []types.ID) (*Disk, error) {
  3883  	// build request URL
  3884  	pathBuildParameter := map[string]interface{}{
  3885  		"rootURL":         SakuraCloudAPIRoot,
  3886  		"pathSuffix":      o.PathSuffix,
  3887  		"pathName":        o.PathName,
  3888  		"zone":            zone,
  3889  		"createParam":     createParam,
  3890  		"editParam":       editParam,
  3891  		"bootAtAvailable": bootAtAvailable,
  3892  		"distantFrom":     distantFrom,
  3893  	}
  3894  
  3895  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  3896  	if err != nil {
  3897  		return nil, err
  3898  	}
  3899  	// build request body
  3900  	var body interface{}
  3901  	v, err := o.transformCreateWithConfigArgs(createParam, editParam, bootAtAvailable, distantFrom)
  3902  	if err != nil {
  3903  		return nil, err
  3904  	}
  3905  	body = v
  3906  
  3907  	// do request
  3908  	data, err := o.Client.Do(ctx, "POST", url, body)
  3909  	if err != nil {
  3910  		return nil, err
  3911  	}
  3912  
  3913  	// build results
  3914  	results, err := o.transformCreateWithConfigResults(data)
  3915  	if err != nil {
  3916  		return nil, err
  3917  	}
  3918  	return results.Disk, nil
  3919  }
  3920  
  3921  // ResizePartition is API call
  3922  func (o *DiskOp) ResizePartition(ctx context.Context, zone string, id types.ID, param *DiskResizePartitionRequest) error {
  3923  	// build request URL
  3924  	pathBuildParameter := map[string]interface{}{
  3925  		"rootURL":    SakuraCloudAPIRoot,
  3926  		"pathSuffix": o.PathSuffix,
  3927  		"pathName":   o.PathName,
  3928  		"zone":       zone,
  3929  		"id":         id,
  3930  		"param":      param,
  3931  	}
  3932  
  3933  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/resize-partition", pathBuildParameter)
  3934  	if err != nil {
  3935  		return err
  3936  	}
  3937  	// build request body
  3938  	var body interface{}
  3939  	v, err := o.transformResizePartitionArgs(id, param)
  3940  	if err != nil {
  3941  		return err
  3942  	}
  3943  	body = v
  3944  
  3945  	// do request
  3946  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3947  	if err != nil {
  3948  		return err
  3949  	}
  3950  
  3951  	// build results
  3952  
  3953  	return nil
  3954  }
  3955  
  3956  // ConnectToServer is API call
  3957  func (o *DiskOp) ConnectToServer(ctx context.Context, zone string, id types.ID, serverID types.ID) error {
  3958  	// build request URL
  3959  	pathBuildParameter := map[string]interface{}{
  3960  		"rootURL":    SakuraCloudAPIRoot,
  3961  		"pathSuffix": o.PathSuffix,
  3962  		"pathName":   o.PathName,
  3963  		"zone":       zone,
  3964  		"id":         id,
  3965  		"serverID":   serverID,
  3966  	}
  3967  
  3968  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/server/{{.serverID}}", pathBuildParameter)
  3969  	if err != nil {
  3970  		return err
  3971  	}
  3972  	// build request body
  3973  	var body interface{}
  3974  
  3975  	// do request
  3976  	_, err = o.Client.Do(ctx, "PUT", url, body)
  3977  	if err != nil {
  3978  		return err
  3979  	}
  3980  
  3981  	// build results
  3982  
  3983  	return nil
  3984  }
  3985  
  3986  // DisconnectFromServer is API call
  3987  func (o *DiskOp) DisconnectFromServer(ctx context.Context, zone string, id types.ID) error {
  3988  	// build request URL
  3989  	pathBuildParameter := map[string]interface{}{
  3990  		"rootURL":    SakuraCloudAPIRoot,
  3991  		"pathSuffix": o.PathSuffix,
  3992  		"pathName":   o.PathName,
  3993  		"zone":       zone,
  3994  		"id":         id,
  3995  	}
  3996  
  3997  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/server", pathBuildParameter)
  3998  	if err != nil {
  3999  		return err
  4000  	}
  4001  	// build request body
  4002  	var body interface{}
  4003  
  4004  	// do request
  4005  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  4006  	if err != nil {
  4007  		return err
  4008  	}
  4009  
  4010  	// build results
  4011  
  4012  	return nil
  4013  }
  4014  
  4015  // Read is API call
  4016  func (o *DiskOp) Read(ctx context.Context, zone string, id types.ID) (*Disk, error) {
  4017  	// build request URL
  4018  	pathBuildParameter := map[string]interface{}{
  4019  		"rootURL":    SakuraCloudAPIRoot,
  4020  		"pathSuffix": o.PathSuffix,
  4021  		"pathName":   o.PathName,
  4022  		"zone":       zone,
  4023  		"id":         id,
  4024  	}
  4025  
  4026  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4027  	if err != nil {
  4028  		return nil, err
  4029  	}
  4030  	// build request body
  4031  	var body interface{}
  4032  
  4033  	// do request
  4034  	data, err := o.Client.Do(ctx, "GET", url, body)
  4035  	if err != nil {
  4036  		return nil, err
  4037  	}
  4038  
  4039  	// build results
  4040  	results, err := o.transformReadResults(data)
  4041  	if err != nil {
  4042  		return nil, err
  4043  	}
  4044  	return results.Disk, nil
  4045  }
  4046  
  4047  // Update is API call
  4048  func (o *DiskOp) Update(ctx context.Context, zone string, id types.ID, param *DiskUpdateRequest) (*Disk, error) {
  4049  	// build request URL
  4050  	pathBuildParameter := map[string]interface{}{
  4051  		"rootURL":    SakuraCloudAPIRoot,
  4052  		"pathSuffix": o.PathSuffix,
  4053  		"pathName":   o.PathName,
  4054  		"zone":       zone,
  4055  		"id":         id,
  4056  		"param":      param,
  4057  	}
  4058  
  4059  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4060  	if err != nil {
  4061  		return nil, err
  4062  	}
  4063  	// build request body
  4064  	var body interface{}
  4065  	v, err := o.transformUpdateArgs(id, param)
  4066  	if err != nil {
  4067  		return nil, err
  4068  	}
  4069  	body = v
  4070  
  4071  	// do request
  4072  	data, err := o.Client.Do(ctx, "PUT", url, body)
  4073  	if err != nil {
  4074  		return nil, err
  4075  	}
  4076  
  4077  	// build results
  4078  	results, err := o.transformUpdateResults(data)
  4079  	if err != nil {
  4080  		return nil, err
  4081  	}
  4082  	return results.Disk, nil
  4083  }
  4084  
  4085  // Delete is API call
  4086  func (o *DiskOp) Delete(ctx context.Context, zone string, id types.ID) error {
  4087  	// build request URL
  4088  	pathBuildParameter := map[string]interface{}{
  4089  		"rootURL":    SakuraCloudAPIRoot,
  4090  		"pathSuffix": o.PathSuffix,
  4091  		"pathName":   o.PathName,
  4092  		"zone":       zone,
  4093  		"id":         id,
  4094  	}
  4095  
  4096  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4097  	if err != nil {
  4098  		return err
  4099  	}
  4100  	// build request body
  4101  	var body interface{}
  4102  
  4103  	// do request
  4104  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  4105  	if err != nil {
  4106  		return err
  4107  	}
  4108  
  4109  	// build results
  4110  
  4111  	return nil
  4112  }
  4113  
  4114  // Monitor is API call
  4115  func (o *DiskOp) Monitor(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*DiskActivity, error) {
  4116  	// build request URL
  4117  	pathBuildParameter := map[string]interface{}{
  4118  		"rootURL":    SakuraCloudAPIRoot,
  4119  		"pathSuffix": o.PathSuffix,
  4120  		"pathName":   o.PathName,
  4121  		"zone":       zone,
  4122  		"id":         id,
  4123  		"condition":  condition,
  4124  	}
  4125  
  4126  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
  4127  	if err != nil {
  4128  		return nil, err
  4129  	}
  4130  	// build request body
  4131  	var body interface{}
  4132  	v, err := o.transformMonitorArgs(id, condition)
  4133  	if err != nil {
  4134  		return nil, err
  4135  	}
  4136  	body = v
  4137  
  4138  	// do request
  4139  	data, err := o.Client.Do(ctx, "GET", url, body)
  4140  	if err != nil {
  4141  		return nil, err
  4142  	}
  4143  
  4144  	// build results
  4145  	results, err := o.transformMonitorResults(data)
  4146  	if err != nil {
  4147  		return nil, err
  4148  	}
  4149  	return results.DiskActivity, nil
  4150  }
  4151  
  4152  // MonitorDisk is API call
  4153  func (o *DiskOp) MonitorDisk(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*DiskActivity, error) {
  4154  	// build request URL
  4155  	pathBuildParameter := map[string]interface{}{
  4156  		"rootURL":    SakuraCloudAPIRoot,
  4157  		"pathSuffix": o.PathSuffix,
  4158  		"pathName":   o.PathName,
  4159  		"zone":       zone,
  4160  		"id":         id,
  4161  		"condition":  condition,
  4162  	}
  4163  
  4164  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
  4165  	if err != nil {
  4166  		return nil, err
  4167  	}
  4168  	// build request body
  4169  	var body interface{}
  4170  	v, err := o.transformMonitorDiskArgs(id, condition)
  4171  	if err != nil {
  4172  		return nil, err
  4173  	}
  4174  	body = v
  4175  
  4176  	// do request
  4177  	data, err := o.Client.Do(ctx, "GET", url, body)
  4178  	if err != nil {
  4179  		return nil, err
  4180  	}
  4181  
  4182  	// build results
  4183  	results, err := o.transformMonitorDiskResults(data)
  4184  	if err != nil {
  4185  		return nil, err
  4186  	}
  4187  	return results.DiskActivity, nil
  4188  }
  4189  
  4190  /*************************************************
  4191  * DiskPlanOp
  4192  *************************************************/
  4193  
  4194  // DiskPlanOp implements DiskPlanAPI interface
  4195  type DiskPlanOp struct {
  4196  	// Client APICaller
  4197  	Client APICaller
  4198  	// PathSuffix is used when building URL
  4199  	PathSuffix string
  4200  	// PathName is used when building URL
  4201  	PathName string
  4202  }
  4203  
  4204  // NewDiskPlanOp creates new DiskPlanOp instance
  4205  func NewDiskPlanOp(caller APICaller) DiskPlanAPI {
  4206  	return GetClientFactoryFunc("DiskPlan")(caller).(DiskPlanAPI)
  4207  }
  4208  
  4209  // Find is API call
  4210  func (o *DiskPlanOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*DiskPlanFindResult, error) {
  4211  	// build request URL
  4212  	pathBuildParameter := map[string]interface{}{
  4213  		"rootURL":    SakuraCloudAPIRoot,
  4214  		"pathSuffix": o.PathSuffix,
  4215  		"pathName":   o.PathName,
  4216  		"zone":       zone,
  4217  		"conditions": conditions,
  4218  	}
  4219  
  4220  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4221  	if err != nil {
  4222  		return nil, err
  4223  	}
  4224  	// build request body
  4225  	var body interface{}
  4226  	v, err := o.transformFindArgs(conditions)
  4227  	if err != nil {
  4228  		return nil, err
  4229  	}
  4230  	body = v
  4231  
  4232  	// do request
  4233  	data, err := o.Client.Do(ctx, "GET", url, body)
  4234  	if err != nil {
  4235  		return nil, err
  4236  	}
  4237  
  4238  	// build results
  4239  	results, err := o.transformFindResults(data)
  4240  	if err != nil {
  4241  		return nil, err
  4242  	}
  4243  	return results, err
  4244  }
  4245  
  4246  // Read is API call
  4247  func (o *DiskPlanOp) Read(ctx context.Context, zone string, id types.ID) (*DiskPlan, error) {
  4248  	// build request URL
  4249  	pathBuildParameter := map[string]interface{}{
  4250  		"rootURL":    SakuraCloudAPIRoot,
  4251  		"pathSuffix": o.PathSuffix,
  4252  		"pathName":   o.PathName,
  4253  		"zone":       zone,
  4254  		"id":         id,
  4255  	}
  4256  
  4257  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4258  	if err != nil {
  4259  		return nil, err
  4260  	}
  4261  	// build request body
  4262  	var body interface{}
  4263  
  4264  	// do request
  4265  	data, err := o.Client.Do(ctx, "GET", url, body)
  4266  	if err != nil {
  4267  		return nil, err
  4268  	}
  4269  
  4270  	// build results
  4271  	results, err := o.transformReadResults(data)
  4272  	if err != nil {
  4273  		return nil, err
  4274  	}
  4275  	return results.DiskPlan, nil
  4276  }
  4277  
  4278  /*************************************************
  4279  * DNSOp
  4280  *************************************************/
  4281  
  4282  // DNSOp implements DNSAPI interface
  4283  type DNSOp struct {
  4284  	// Client APICaller
  4285  	Client APICaller
  4286  	// PathSuffix is used when building URL
  4287  	PathSuffix string
  4288  	// PathName is used when building URL
  4289  	PathName string
  4290  }
  4291  
  4292  // NewDNSOp creates new DNSOp instance
  4293  func NewDNSOp(caller APICaller) DNSAPI {
  4294  	return GetClientFactoryFunc("DNS")(caller).(DNSAPI)
  4295  }
  4296  
  4297  // Find is API call
  4298  func (o *DNSOp) Find(ctx context.Context, conditions *FindCondition) (*DNSFindResult, error) {
  4299  	// build request URL
  4300  	pathBuildParameter := map[string]interface{}{
  4301  		"rootURL":    SakuraCloudAPIRoot,
  4302  		"pathSuffix": o.PathSuffix,
  4303  		"pathName":   o.PathName,
  4304  		"zone":       APIDefaultZone,
  4305  		"conditions": conditions,
  4306  	}
  4307  
  4308  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4309  	if err != nil {
  4310  		return nil, err
  4311  	}
  4312  	// build request body
  4313  	var body interface{}
  4314  	v, err := o.transformFindArgs(conditions)
  4315  	if err != nil {
  4316  		return nil, err
  4317  	}
  4318  	body = v
  4319  
  4320  	// do request
  4321  	data, err := o.Client.Do(ctx, "GET", url, body)
  4322  	if err != nil {
  4323  		return nil, err
  4324  	}
  4325  
  4326  	// build results
  4327  	results, err := o.transformFindResults(data)
  4328  	if err != nil {
  4329  		return nil, err
  4330  	}
  4331  	return results, err
  4332  }
  4333  
  4334  // Create is API call
  4335  func (o *DNSOp) Create(ctx context.Context, param *DNSCreateRequest) (*DNS, error) {
  4336  	// build request URL
  4337  	pathBuildParameter := map[string]interface{}{
  4338  		"rootURL":    SakuraCloudAPIRoot,
  4339  		"pathSuffix": o.PathSuffix,
  4340  		"pathName":   o.PathName,
  4341  		"zone":       APIDefaultZone,
  4342  		"param":      param,
  4343  	}
  4344  
  4345  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4346  	if err != nil {
  4347  		return nil, err
  4348  	}
  4349  	// build request body
  4350  	var body interface{}
  4351  	v, err := o.transformCreateArgs(param)
  4352  	if err != nil {
  4353  		return nil, err
  4354  	}
  4355  	body = v
  4356  
  4357  	// do request
  4358  	data, err := o.Client.Do(ctx, "POST", url, body)
  4359  	if err != nil {
  4360  		return nil, err
  4361  	}
  4362  
  4363  	// build results
  4364  	results, err := o.transformCreateResults(data)
  4365  	if err != nil {
  4366  		return nil, err
  4367  	}
  4368  	return results.DNS, nil
  4369  }
  4370  
  4371  // Read is API call
  4372  func (o *DNSOp) Read(ctx context.Context, id types.ID) (*DNS, error) {
  4373  	// build request URL
  4374  	pathBuildParameter := map[string]interface{}{
  4375  		"rootURL":    SakuraCloudAPIRoot,
  4376  		"pathSuffix": o.PathSuffix,
  4377  		"pathName":   o.PathName,
  4378  		"zone":       APIDefaultZone,
  4379  		"id":         id,
  4380  	}
  4381  
  4382  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4383  	if err != nil {
  4384  		return nil, err
  4385  	}
  4386  	// build request body
  4387  	var body interface{}
  4388  
  4389  	// do request
  4390  	data, err := o.Client.Do(ctx, "GET", url, body)
  4391  	if err != nil {
  4392  		return nil, err
  4393  	}
  4394  
  4395  	// build results
  4396  	results, err := o.transformReadResults(data)
  4397  	if err != nil {
  4398  		return nil, err
  4399  	}
  4400  	return results.DNS, nil
  4401  }
  4402  
  4403  // Update is API call
  4404  func (o *DNSOp) Update(ctx context.Context, id types.ID, param *DNSUpdateRequest) (*DNS, error) {
  4405  	// build request URL
  4406  	pathBuildParameter := map[string]interface{}{
  4407  		"rootURL":    SakuraCloudAPIRoot,
  4408  		"pathSuffix": o.PathSuffix,
  4409  		"pathName":   o.PathName,
  4410  		"zone":       APIDefaultZone,
  4411  		"id":         id,
  4412  		"param":      param,
  4413  	}
  4414  
  4415  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4416  	if err != nil {
  4417  		return nil, err
  4418  	}
  4419  	// build request body
  4420  	var body interface{}
  4421  	v, err := o.transformUpdateArgs(id, param)
  4422  	if err != nil {
  4423  		return nil, err
  4424  	}
  4425  	body = v
  4426  
  4427  	// do request
  4428  	data, err := o.Client.Do(ctx, "PUT", url, body)
  4429  	if err != nil {
  4430  		return nil, err
  4431  	}
  4432  
  4433  	// build results
  4434  	results, err := o.transformUpdateResults(data)
  4435  	if err != nil {
  4436  		return nil, err
  4437  	}
  4438  	return results.DNS, nil
  4439  }
  4440  
  4441  // UpdateSettings is API call
  4442  func (o *DNSOp) UpdateSettings(ctx context.Context, id types.ID, param *DNSUpdateSettingsRequest) (*DNS, error) {
  4443  	// build request URL
  4444  	pathBuildParameter := map[string]interface{}{
  4445  		"rootURL":    SakuraCloudAPIRoot,
  4446  		"pathSuffix": o.PathSuffix,
  4447  		"pathName":   o.PathName,
  4448  		"zone":       APIDefaultZone,
  4449  		"id":         id,
  4450  		"param":      param,
  4451  	}
  4452  
  4453  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4454  	if err != nil {
  4455  		return nil, err
  4456  	}
  4457  	// build request body
  4458  	var body interface{}
  4459  	v, err := o.transformUpdateSettingsArgs(id, param)
  4460  	if err != nil {
  4461  		return nil, err
  4462  	}
  4463  	body = v
  4464  
  4465  	// do request
  4466  	data, err := o.Client.Do(ctx, "PUT", url, body)
  4467  	if err != nil {
  4468  		return nil, err
  4469  	}
  4470  
  4471  	// build results
  4472  	results, err := o.transformUpdateSettingsResults(data)
  4473  	if err != nil {
  4474  		return nil, err
  4475  	}
  4476  	return results.DNS, nil
  4477  }
  4478  
  4479  // Delete is API call
  4480  func (o *DNSOp) Delete(ctx context.Context, id types.ID) error {
  4481  	// build request URL
  4482  	pathBuildParameter := map[string]interface{}{
  4483  		"rootURL":    SakuraCloudAPIRoot,
  4484  		"pathSuffix": o.PathSuffix,
  4485  		"pathName":   o.PathName,
  4486  		"zone":       APIDefaultZone,
  4487  		"id":         id,
  4488  	}
  4489  
  4490  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4491  	if err != nil {
  4492  		return err
  4493  	}
  4494  	// build request body
  4495  	var body interface{}
  4496  
  4497  	// do request
  4498  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  4499  	if err != nil {
  4500  		return err
  4501  	}
  4502  
  4503  	// build results
  4504  
  4505  	return nil
  4506  }
  4507  
  4508  /*************************************************
  4509  * EnhancedDBOp
  4510  *************************************************/
  4511  
  4512  // EnhancedDBOp implements EnhancedDBAPI interface
  4513  type EnhancedDBOp struct {
  4514  	// Client APICaller
  4515  	Client APICaller
  4516  	// PathSuffix is used when building URL
  4517  	PathSuffix string
  4518  	// PathName is used when building URL
  4519  	PathName string
  4520  }
  4521  
  4522  // NewEnhancedDBOp creates new EnhancedDBOp instance
  4523  func NewEnhancedDBOp(caller APICaller) EnhancedDBAPI {
  4524  	return GetClientFactoryFunc("EnhancedDB")(caller).(EnhancedDBAPI)
  4525  }
  4526  
  4527  // Find is API call
  4528  func (o *EnhancedDBOp) Find(ctx context.Context, conditions *FindCondition) (*EnhancedDBFindResult, error) {
  4529  	// build request URL
  4530  	pathBuildParameter := map[string]interface{}{
  4531  		"rootURL":    SakuraCloudAPIRoot,
  4532  		"pathSuffix": o.PathSuffix,
  4533  		"pathName":   o.PathName,
  4534  		"zone":       APIDefaultZone,
  4535  		"conditions": conditions,
  4536  	}
  4537  
  4538  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4539  	if err != nil {
  4540  		return nil, err
  4541  	}
  4542  	// build request body
  4543  	var body interface{}
  4544  	v, err := o.transformFindArgs(conditions)
  4545  	if err != nil {
  4546  		return nil, err
  4547  	}
  4548  	body = v
  4549  
  4550  	// do request
  4551  	data, err := o.Client.Do(ctx, "GET", url, body)
  4552  	if err != nil {
  4553  		return nil, err
  4554  	}
  4555  
  4556  	// build results
  4557  	results, err := o.transformFindResults(data)
  4558  	if err != nil {
  4559  		return nil, err
  4560  	}
  4561  	return results, err
  4562  }
  4563  
  4564  // Create is API call
  4565  func (o *EnhancedDBOp) Create(ctx context.Context, param *EnhancedDBCreateRequest) (*EnhancedDB, error) {
  4566  	// build request URL
  4567  	pathBuildParameter := map[string]interface{}{
  4568  		"rootURL":    SakuraCloudAPIRoot,
  4569  		"pathSuffix": o.PathSuffix,
  4570  		"pathName":   o.PathName,
  4571  		"zone":       APIDefaultZone,
  4572  		"param":      param,
  4573  	}
  4574  
  4575  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4576  	if err != nil {
  4577  		return nil, err
  4578  	}
  4579  	// build request body
  4580  	var body interface{}
  4581  	v, err := o.transformCreateArgs(param)
  4582  	if err != nil {
  4583  		return nil, err
  4584  	}
  4585  	body = v
  4586  
  4587  	// do request
  4588  	data, err := o.Client.Do(ctx, "POST", url, body)
  4589  	if err != nil {
  4590  		return nil, err
  4591  	}
  4592  
  4593  	// build results
  4594  	results, err := o.transformCreateResults(data)
  4595  	if err != nil {
  4596  		return nil, err
  4597  	}
  4598  	return results.EnhancedDB, nil
  4599  }
  4600  
  4601  // Read is API call
  4602  func (o *EnhancedDBOp) Read(ctx context.Context, id types.ID) (*EnhancedDB, error) {
  4603  	// build request URL
  4604  	pathBuildParameter := map[string]interface{}{
  4605  		"rootURL":    SakuraCloudAPIRoot,
  4606  		"pathSuffix": o.PathSuffix,
  4607  		"pathName":   o.PathName,
  4608  		"zone":       APIDefaultZone,
  4609  		"id":         id,
  4610  	}
  4611  
  4612  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4613  	if err != nil {
  4614  		return nil, err
  4615  	}
  4616  	// build request body
  4617  	var body interface{}
  4618  
  4619  	// do request
  4620  	data, err := o.Client.Do(ctx, "GET", url, body)
  4621  	if err != nil {
  4622  		return nil, err
  4623  	}
  4624  
  4625  	// build results
  4626  	results, err := o.transformReadResults(data)
  4627  	if err != nil {
  4628  		return nil, err
  4629  	}
  4630  	return results.EnhancedDB, nil
  4631  }
  4632  
  4633  // Update is API call
  4634  func (o *EnhancedDBOp) Update(ctx context.Context, id types.ID, param *EnhancedDBUpdateRequest) (*EnhancedDB, error) {
  4635  	// build request URL
  4636  	pathBuildParameter := map[string]interface{}{
  4637  		"rootURL":    SakuraCloudAPIRoot,
  4638  		"pathSuffix": o.PathSuffix,
  4639  		"pathName":   o.PathName,
  4640  		"zone":       APIDefaultZone,
  4641  		"id":         id,
  4642  		"param":      param,
  4643  	}
  4644  
  4645  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4646  	if err != nil {
  4647  		return nil, err
  4648  	}
  4649  	// build request body
  4650  	var body interface{}
  4651  	v, err := o.transformUpdateArgs(id, param)
  4652  	if err != nil {
  4653  		return nil, err
  4654  	}
  4655  	body = v
  4656  
  4657  	// do request
  4658  	data, err := o.Client.Do(ctx, "PUT", url, body)
  4659  	if err != nil {
  4660  		return nil, err
  4661  	}
  4662  
  4663  	// build results
  4664  	results, err := o.transformUpdateResults(data)
  4665  	if err != nil {
  4666  		return nil, err
  4667  	}
  4668  	return results.EnhancedDB, nil
  4669  }
  4670  
  4671  // Delete is API call
  4672  func (o *EnhancedDBOp) Delete(ctx context.Context, id types.ID) error {
  4673  	// build request URL
  4674  	pathBuildParameter := map[string]interface{}{
  4675  		"rootURL":    SakuraCloudAPIRoot,
  4676  		"pathSuffix": o.PathSuffix,
  4677  		"pathName":   o.PathName,
  4678  		"zone":       APIDefaultZone,
  4679  		"id":         id,
  4680  	}
  4681  
  4682  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4683  	if err != nil {
  4684  		return err
  4685  	}
  4686  	// build request body
  4687  	var body interface{}
  4688  
  4689  	// do request
  4690  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  4691  	if err != nil {
  4692  		return err
  4693  	}
  4694  
  4695  	// build results
  4696  
  4697  	return nil
  4698  }
  4699  
  4700  // SetPassword is API call
  4701  func (o *EnhancedDBOp) SetPassword(ctx context.Context, id types.ID, param *EnhancedDBSetPasswordRequest) error {
  4702  	// build request URL
  4703  	pathBuildParameter := map[string]interface{}{
  4704  		"rootURL":    SakuraCloudAPIRoot,
  4705  		"pathSuffix": o.PathSuffix,
  4706  		"pathName":   o.PathName,
  4707  		"zone":       APIDefaultZone,
  4708  		"id":         id,
  4709  		"param":      param,
  4710  	}
  4711  
  4712  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/enhanceddb/set-password", pathBuildParameter)
  4713  	if err != nil {
  4714  		return err
  4715  	}
  4716  	// build request body
  4717  	var body interface{}
  4718  	v, err := o.transformSetPasswordArgs(id, param)
  4719  	if err != nil {
  4720  		return err
  4721  	}
  4722  	body = v
  4723  
  4724  	// do request
  4725  	_, err = o.Client.Do(ctx, "PUT", url, body)
  4726  	if err != nil {
  4727  		return err
  4728  	}
  4729  
  4730  	// build results
  4731  
  4732  	return nil
  4733  }
  4734  
  4735  // GetConfig is API call
  4736  func (o *EnhancedDBOp) GetConfig(ctx context.Context, id types.ID) (*EnhancedDBConfig, error) {
  4737  	// build request URL
  4738  	pathBuildParameter := map[string]interface{}{
  4739  		"rootURL":    SakuraCloudAPIRoot,
  4740  		"pathSuffix": o.PathSuffix,
  4741  		"pathName":   o.PathName,
  4742  		"zone":       APIDefaultZone,
  4743  		"id":         id,
  4744  	}
  4745  
  4746  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/enhanceddb/config", pathBuildParameter)
  4747  	if err != nil {
  4748  		return nil, err
  4749  	}
  4750  	// build request body
  4751  	var body interface{}
  4752  
  4753  	// do request
  4754  	data, err := o.Client.Do(ctx, "GET", url, body)
  4755  	if err != nil {
  4756  		return nil, err
  4757  	}
  4758  
  4759  	// build results
  4760  	results, err := o.transformGetConfigResults(data)
  4761  	if err != nil {
  4762  		return nil, err
  4763  	}
  4764  	return results.EnhancedDBConfig, nil
  4765  }
  4766  
  4767  // SetConfig is API call
  4768  func (o *EnhancedDBOp) SetConfig(ctx context.Context, id types.ID, param *EnhancedDBSetConfigRequest) error {
  4769  	// build request URL
  4770  	pathBuildParameter := map[string]interface{}{
  4771  		"rootURL":    SakuraCloudAPIRoot,
  4772  		"pathSuffix": o.PathSuffix,
  4773  		"pathName":   o.PathName,
  4774  		"zone":       APIDefaultZone,
  4775  		"id":         id,
  4776  		"param":      param,
  4777  	}
  4778  
  4779  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/enhanceddb/config", pathBuildParameter)
  4780  	if err != nil {
  4781  		return err
  4782  	}
  4783  	// build request body
  4784  	var body interface{}
  4785  	v, err := o.transformSetConfigArgs(id, param)
  4786  	if err != nil {
  4787  		return err
  4788  	}
  4789  	body = v
  4790  
  4791  	// do request
  4792  	_, err = o.Client.Do(ctx, "PUT", url, body)
  4793  	if err != nil {
  4794  		return err
  4795  	}
  4796  
  4797  	// build results
  4798  
  4799  	return nil
  4800  }
  4801  
  4802  /*************************************************
  4803  * ESMEOp
  4804  *************************************************/
  4805  
  4806  // ESMEOp implements ESMEAPI interface
  4807  type ESMEOp struct {
  4808  	// Client APICaller
  4809  	Client APICaller
  4810  	// PathSuffix is used when building URL
  4811  	PathSuffix string
  4812  	// PathName is used when building URL
  4813  	PathName string
  4814  }
  4815  
  4816  // NewESMEOp creates new ESMEOp instance
  4817  func NewESMEOp(caller APICaller) ESMEAPI {
  4818  	return GetClientFactoryFunc("ESME")(caller).(ESMEAPI)
  4819  }
  4820  
  4821  // Find is API call
  4822  func (o *ESMEOp) Find(ctx context.Context, conditions *FindCondition) (*ESMEFindResult, error) {
  4823  	// build request URL
  4824  	pathBuildParameter := map[string]interface{}{
  4825  		"rootURL":    SakuraCloudAPIRoot,
  4826  		"pathSuffix": o.PathSuffix,
  4827  		"pathName":   o.PathName,
  4828  		"zone":       APIDefaultZone,
  4829  		"conditions": conditions,
  4830  	}
  4831  
  4832  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4833  	if err != nil {
  4834  		return nil, err
  4835  	}
  4836  	// build request body
  4837  	var body interface{}
  4838  	v, err := o.transformFindArgs(conditions)
  4839  	if err != nil {
  4840  		return nil, err
  4841  	}
  4842  	body = v
  4843  
  4844  	// do request
  4845  	data, err := o.Client.Do(ctx, "GET", url, body)
  4846  	if err != nil {
  4847  		return nil, err
  4848  	}
  4849  
  4850  	// build results
  4851  	results, err := o.transformFindResults(data)
  4852  	if err != nil {
  4853  		return nil, err
  4854  	}
  4855  	return results, err
  4856  }
  4857  
  4858  // Create is API call
  4859  func (o *ESMEOp) Create(ctx context.Context, param *ESMECreateRequest) (*ESME, error) {
  4860  	// build request URL
  4861  	pathBuildParameter := map[string]interface{}{
  4862  		"rootURL":    SakuraCloudAPIRoot,
  4863  		"pathSuffix": o.PathSuffix,
  4864  		"pathName":   o.PathName,
  4865  		"zone":       APIDefaultZone,
  4866  		"param":      param,
  4867  	}
  4868  
  4869  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  4870  	if err != nil {
  4871  		return nil, err
  4872  	}
  4873  	// build request body
  4874  	var body interface{}
  4875  	v, err := o.transformCreateArgs(param)
  4876  	if err != nil {
  4877  		return nil, err
  4878  	}
  4879  	body = v
  4880  
  4881  	// do request
  4882  	data, err := o.Client.Do(ctx, "POST", url, body)
  4883  	if err != nil {
  4884  		return nil, err
  4885  	}
  4886  
  4887  	// build results
  4888  	results, err := o.transformCreateResults(data)
  4889  	if err != nil {
  4890  		return nil, err
  4891  	}
  4892  	return results.ESME, nil
  4893  }
  4894  
  4895  // Read is API call
  4896  func (o *ESMEOp) Read(ctx context.Context, id types.ID) (*ESME, error) {
  4897  	// build request URL
  4898  	pathBuildParameter := map[string]interface{}{
  4899  		"rootURL":    SakuraCloudAPIRoot,
  4900  		"pathSuffix": o.PathSuffix,
  4901  		"pathName":   o.PathName,
  4902  		"zone":       APIDefaultZone,
  4903  		"id":         id,
  4904  	}
  4905  
  4906  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4907  	if err != nil {
  4908  		return nil, err
  4909  	}
  4910  	// build request body
  4911  	var body interface{}
  4912  
  4913  	// do request
  4914  	data, err := o.Client.Do(ctx, "GET", url, body)
  4915  	if err != nil {
  4916  		return nil, err
  4917  	}
  4918  
  4919  	// build results
  4920  	results, err := o.transformReadResults(data)
  4921  	if err != nil {
  4922  		return nil, err
  4923  	}
  4924  	return results.ESME, nil
  4925  }
  4926  
  4927  // Update is API call
  4928  func (o *ESMEOp) Update(ctx context.Context, id types.ID, param *ESMEUpdateRequest) (*ESME, error) {
  4929  	// build request URL
  4930  	pathBuildParameter := map[string]interface{}{
  4931  		"rootURL":    SakuraCloudAPIRoot,
  4932  		"pathSuffix": o.PathSuffix,
  4933  		"pathName":   o.PathName,
  4934  		"zone":       APIDefaultZone,
  4935  		"id":         id,
  4936  		"param":      param,
  4937  	}
  4938  
  4939  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4940  	if err != nil {
  4941  		return nil, err
  4942  	}
  4943  	// build request body
  4944  	var body interface{}
  4945  	v, err := o.transformUpdateArgs(id, param)
  4946  	if err != nil {
  4947  		return nil, err
  4948  	}
  4949  	body = v
  4950  
  4951  	// do request
  4952  	data, err := o.Client.Do(ctx, "PUT", url, body)
  4953  	if err != nil {
  4954  		return nil, err
  4955  	}
  4956  
  4957  	// build results
  4958  	results, err := o.transformUpdateResults(data)
  4959  	if err != nil {
  4960  		return nil, err
  4961  	}
  4962  	return results.ESME, nil
  4963  }
  4964  
  4965  // Delete is API call
  4966  func (o *ESMEOp) Delete(ctx context.Context, id types.ID) error {
  4967  	// build request URL
  4968  	pathBuildParameter := map[string]interface{}{
  4969  		"rootURL":    SakuraCloudAPIRoot,
  4970  		"pathSuffix": o.PathSuffix,
  4971  		"pathName":   o.PathName,
  4972  		"zone":       APIDefaultZone,
  4973  		"id":         id,
  4974  	}
  4975  
  4976  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  4977  	if err != nil {
  4978  		return err
  4979  	}
  4980  	// build request body
  4981  	var body interface{}
  4982  
  4983  	// do request
  4984  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  4985  	if err != nil {
  4986  		return err
  4987  	}
  4988  
  4989  	// build results
  4990  
  4991  	return nil
  4992  }
  4993  
  4994  // SendMessageWithGeneratedOTP is API call
  4995  func (o *ESMEOp) SendMessageWithGeneratedOTP(ctx context.Context, id types.ID, param *ESMESendMessageWithGeneratedOTPRequest) (*ESMESendMessageResult, error) {
  4996  	// build request URL
  4997  	pathBuildParameter := map[string]interface{}{
  4998  		"rootURL":    SakuraCloudAPIRoot,
  4999  		"pathSuffix": o.PathSuffix,
  5000  		"pathName":   o.PathName,
  5001  		"zone":       APIDefaultZone,
  5002  		"id":         id,
  5003  		"param":      param,
  5004  	}
  5005  
  5006  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/esme/2fa/otp", pathBuildParameter)
  5007  	if err != nil {
  5008  		return nil, err
  5009  	}
  5010  	// build request body
  5011  	var body interface{}
  5012  	v, err := o.transformSendMessageWithGeneratedOTPArgs(id, param)
  5013  	if err != nil {
  5014  		return nil, err
  5015  	}
  5016  	body = v
  5017  
  5018  	// do request
  5019  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5020  	if err != nil {
  5021  		return nil, err
  5022  	}
  5023  
  5024  	// build results
  5025  	results, err := o.transformSendMessageWithGeneratedOTPResults(data)
  5026  	if err != nil {
  5027  		return nil, err
  5028  	}
  5029  	return results.ESMESendMessageResult, nil
  5030  }
  5031  
  5032  // SendMessageWithInputtedOTP is API call
  5033  func (o *ESMEOp) SendMessageWithInputtedOTP(ctx context.Context, id types.ID, param *ESMESendMessageWithInputtedOTPRequest) (*ESMESendMessageResult, error) {
  5034  	// build request URL
  5035  	pathBuildParameter := map[string]interface{}{
  5036  		"rootURL":    SakuraCloudAPIRoot,
  5037  		"pathSuffix": o.PathSuffix,
  5038  		"pathName":   o.PathName,
  5039  		"zone":       APIDefaultZone,
  5040  		"id":         id,
  5041  		"param":      param,
  5042  	}
  5043  
  5044  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/esme/2fa", pathBuildParameter)
  5045  	if err != nil {
  5046  		return nil, err
  5047  	}
  5048  	// build request body
  5049  	var body interface{}
  5050  	v, err := o.transformSendMessageWithInputtedOTPArgs(id, param)
  5051  	if err != nil {
  5052  		return nil, err
  5053  	}
  5054  	body = v
  5055  
  5056  	// do request
  5057  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5058  	if err != nil {
  5059  		return nil, err
  5060  	}
  5061  
  5062  	// build results
  5063  	results, err := o.transformSendMessageWithInputtedOTPResults(data)
  5064  	if err != nil {
  5065  		return nil, err
  5066  	}
  5067  	return results.ESMESendMessageResult, nil
  5068  }
  5069  
  5070  // Logs is API call
  5071  func (o *ESMEOp) Logs(ctx context.Context, id types.ID) ([]*ESMELogs, error) {
  5072  	// build request URL
  5073  	pathBuildParameter := map[string]interface{}{
  5074  		"rootURL":    SakuraCloudAPIRoot,
  5075  		"pathSuffix": o.PathSuffix,
  5076  		"pathName":   o.PathName,
  5077  		"zone":       APIDefaultZone,
  5078  		"id":         id,
  5079  	}
  5080  
  5081  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/esme/logs", pathBuildParameter)
  5082  	if err != nil {
  5083  		return nil, err
  5084  	}
  5085  	// build request body
  5086  	var body interface{}
  5087  
  5088  	// do request
  5089  	data, err := o.Client.Do(ctx, "GET", url, body)
  5090  	if err != nil {
  5091  		return nil, err
  5092  	}
  5093  
  5094  	// build results
  5095  	results, err := o.transformLogsResults(data)
  5096  	if err != nil {
  5097  		return nil, err
  5098  	}
  5099  	return results.Logs, nil
  5100  }
  5101  
  5102  /*************************************************
  5103  * GSLBOp
  5104  *************************************************/
  5105  
  5106  // GSLBOp implements GSLBAPI interface
  5107  type GSLBOp struct {
  5108  	// Client APICaller
  5109  	Client APICaller
  5110  	// PathSuffix is used when building URL
  5111  	PathSuffix string
  5112  	// PathName is used when building URL
  5113  	PathName string
  5114  }
  5115  
  5116  // NewGSLBOp creates new GSLBOp instance
  5117  func NewGSLBOp(caller APICaller) GSLBAPI {
  5118  	return GetClientFactoryFunc("GSLB")(caller).(GSLBAPI)
  5119  }
  5120  
  5121  // Find is API call
  5122  func (o *GSLBOp) Find(ctx context.Context, conditions *FindCondition) (*GSLBFindResult, error) {
  5123  	// build request URL
  5124  	pathBuildParameter := map[string]interface{}{
  5125  		"rootURL":    SakuraCloudAPIRoot,
  5126  		"pathSuffix": o.PathSuffix,
  5127  		"pathName":   o.PathName,
  5128  		"zone":       APIDefaultZone,
  5129  		"conditions": conditions,
  5130  	}
  5131  
  5132  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5133  	if err != nil {
  5134  		return nil, err
  5135  	}
  5136  	// build request body
  5137  	var body interface{}
  5138  	v, err := o.transformFindArgs(conditions)
  5139  	if err != nil {
  5140  		return nil, err
  5141  	}
  5142  	body = v
  5143  
  5144  	// do request
  5145  	data, err := o.Client.Do(ctx, "GET", url, body)
  5146  	if err != nil {
  5147  		return nil, err
  5148  	}
  5149  
  5150  	// build results
  5151  	results, err := o.transformFindResults(data)
  5152  	if err != nil {
  5153  		return nil, err
  5154  	}
  5155  	return results, err
  5156  }
  5157  
  5158  // Create is API call
  5159  func (o *GSLBOp) Create(ctx context.Context, param *GSLBCreateRequest) (*GSLB, error) {
  5160  	// build request URL
  5161  	pathBuildParameter := map[string]interface{}{
  5162  		"rootURL":    SakuraCloudAPIRoot,
  5163  		"pathSuffix": o.PathSuffix,
  5164  		"pathName":   o.PathName,
  5165  		"zone":       APIDefaultZone,
  5166  		"param":      param,
  5167  	}
  5168  
  5169  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5170  	if err != nil {
  5171  		return nil, err
  5172  	}
  5173  	// build request body
  5174  	var body interface{}
  5175  	v, err := o.transformCreateArgs(param)
  5176  	if err != nil {
  5177  		return nil, err
  5178  	}
  5179  	body = v
  5180  
  5181  	// do request
  5182  	data, err := o.Client.Do(ctx, "POST", url, body)
  5183  	if err != nil {
  5184  		return nil, err
  5185  	}
  5186  
  5187  	// build results
  5188  	results, err := o.transformCreateResults(data)
  5189  	if err != nil {
  5190  		return nil, err
  5191  	}
  5192  	return results.GSLB, nil
  5193  }
  5194  
  5195  // Read is API call
  5196  func (o *GSLBOp) Read(ctx context.Context, id types.ID) (*GSLB, error) {
  5197  	// build request URL
  5198  	pathBuildParameter := map[string]interface{}{
  5199  		"rootURL":    SakuraCloudAPIRoot,
  5200  		"pathSuffix": o.PathSuffix,
  5201  		"pathName":   o.PathName,
  5202  		"zone":       APIDefaultZone,
  5203  		"id":         id,
  5204  	}
  5205  
  5206  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5207  	if err != nil {
  5208  		return nil, err
  5209  	}
  5210  	// build request body
  5211  	var body interface{}
  5212  
  5213  	// do request
  5214  	data, err := o.Client.Do(ctx, "GET", url, body)
  5215  	if err != nil {
  5216  		return nil, err
  5217  	}
  5218  
  5219  	// build results
  5220  	results, err := o.transformReadResults(data)
  5221  	if err != nil {
  5222  		return nil, err
  5223  	}
  5224  	return results.GSLB, nil
  5225  }
  5226  
  5227  // Update is API call
  5228  func (o *GSLBOp) Update(ctx context.Context, id types.ID, param *GSLBUpdateRequest) (*GSLB, error) {
  5229  	// build request URL
  5230  	pathBuildParameter := map[string]interface{}{
  5231  		"rootURL":    SakuraCloudAPIRoot,
  5232  		"pathSuffix": o.PathSuffix,
  5233  		"pathName":   o.PathName,
  5234  		"zone":       APIDefaultZone,
  5235  		"id":         id,
  5236  		"param":      param,
  5237  	}
  5238  
  5239  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5240  	if err != nil {
  5241  		return nil, err
  5242  	}
  5243  	// build request body
  5244  	var body interface{}
  5245  	v, err := o.transformUpdateArgs(id, param)
  5246  	if err != nil {
  5247  		return nil, err
  5248  	}
  5249  	body = v
  5250  
  5251  	// do request
  5252  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5253  	if err != nil {
  5254  		return nil, err
  5255  	}
  5256  
  5257  	// build results
  5258  	results, err := o.transformUpdateResults(data)
  5259  	if err != nil {
  5260  		return nil, err
  5261  	}
  5262  	return results.GSLB, nil
  5263  }
  5264  
  5265  // UpdateSettings is API call
  5266  func (o *GSLBOp) UpdateSettings(ctx context.Context, id types.ID, param *GSLBUpdateSettingsRequest) (*GSLB, error) {
  5267  	// build request URL
  5268  	pathBuildParameter := map[string]interface{}{
  5269  		"rootURL":    SakuraCloudAPIRoot,
  5270  		"pathSuffix": o.PathSuffix,
  5271  		"pathName":   o.PathName,
  5272  		"zone":       APIDefaultZone,
  5273  		"id":         id,
  5274  		"param":      param,
  5275  	}
  5276  
  5277  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5278  	if err != nil {
  5279  		return nil, err
  5280  	}
  5281  	// build request body
  5282  	var body interface{}
  5283  	v, err := o.transformUpdateSettingsArgs(id, param)
  5284  	if err != nil {
  5285  		return nil, err
  5286  	}
  5287  	body = v
  5288  
  5289  	// do request
  5290  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5291  	if err != nil {
  5292  		return nil, err
  5293  	}
  5294  
  5295  	// build results
  5296  	results, err := o.transformUpdateSettingsResults(data)
  5297  	if err != nil {
  5298  		return nil, err
  5299  	}
  5300  	return results.GSLB, nil
  5301  }
  5302  
  5303  // Delete is API call
  5304  func (o *GSLBOp) Delete(ctx context.Context, id types.ID) error {
  5305  	// build request URL
  5306  	pathBuildParameter := map[string]interface{}{
  5307  		"rootURL":    SakuraCloudAPIRoot,
  5308  		"pathSuffix": o.PathSuffix,
  5309  		"pathName":   o.PathName,
  5310  		"zone":       APIDefaultZone,
  5311  		"id":         id,
  5312  	}
  5313  
  5314  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5315  	if err != nil {
  5316  		return err
  5317  	}
  5318  	// build request body
  5319  	var body interface{}
  5320  
  5321  	// do request
  5322  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  5323  	if err != nil {
  5324  		return err
  5325  	}
  5326  
  5327  	// build results
  5328  
  5329  	return nil
  5330  }
  5331  
  5332  /*************************************************
  5333  * IconOp
  5334  *************************************************/
  5335  
  5336  // IconOp implements IconAPI interface
  5337  type IconOp struct {
  5338  	// Client APICaller
  5339  	Client APICaller
  5340  	// PathSuffix is used when building URL
  5341  	PathSuffix string
  5342  	// PathName is used when building URL
  5343  	PathName string
  5344  }
  5345  
  5346  // NewIconOp creates new IconOp instance
  5347  func NewIconOp(caller APICaller) IconAPI {
  5348  	return GetClientFactoryFunc("Icon")(caller).(IconAPI)
  5349  }
  5350  
  5351  // Find is API call
  5352  func (o *IconOp) Find(ctx context.Context, conditions *FindCondition) (*IconFindResult, error) {
  5353  	// build request URL
  5354  	pathBuildParameter := map[string]interface{}{
  5355  		"rootURL":    SakuraCloudAPIRoot,
  5356  		"pathSuffix": o.PathSuffix,
  5357  		"pathName":   o.PathName,
  5358  		"zone":       APIDefaultZone,
  5359  		"conditions": conditions,
  5360  	}
  5361  
  5362  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5363  	if err != nil {
  5364  		return nil, err
  5365  	}
  5366  	// build request body
  5367  	var body interface{}
  5368  	v, err := o.transformFindArgs(conditions)
  5369  	if err != nil {
  5370  		return nil, err
  5371  	}
  5372  	body = v
  5373  
  5374  	// do request
  5375  	data, err := o.Client.Do(ctx, "GET", url, body)
  5376  	if err != nil {
  5377  		return nil, err
  5378  	}
  5379  
  5380  	// build results
  5381  	results, err := o.transformFindResults(data)
  5382  	if err != nil {
  5383  		return nil, err
  5384  	}
  5385  	return results, err
  5386  }
  5387  
  5388  // Create is API call
  5389  func (o *IconOp) Create(ctx context.Context, param *IconCreateRequest) (*Icon, error) {
  5390  	// build request URL
  5391  	pathBuildParameter := map[string]interface{}{
  5392  		"rootURL":    SakuraCloudAPIRoot,
  5393  		"pathSuffix": o.PathSuffix,
  5394  		"pathName":   o.PathName,
  5395  		"zone":       APIDefaultZone,
  5396  		"param":      param,
  5397  	}
  5398  
  5399  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5400  	if err != nil {
  5401  		return nil, err
  5402  	}
  5403  	// build request body
  5404  	var body interface{}
  5405  	v, err := o.transformCreateArgs(param)
  5406  	if err != nil {
  5407  		return nil, err
  5408  	}
  5409  	body = v
  5410  
  5411  	// do request
  5412  	data, err := o.Client.Do(ctx, "POST", url, body)
  5413  	if err != nil {
  5414  		return nil, err
  5415  	}
  5416  
  5417  	// build results
  5418  	results, err := o.transformCreateResults(data)
  5419  	if err != nil {
  5420  		return nil, err
  5421  	}
  5422  	return results.Icon, nil
  5423  }
  5424  
  5425  // Read is API call
  5426  func (o *IconOp) Read(ctx context.Context, id types.ID) (*Icon, error) {
  5427  	// build request URL
  5428  	pathBuildParameter := map[string]interface{}{
  5429  		"rootURL":    SakuraCloudAPIRoot,
  5430  		"pathSuffix": o.PathSuffix,
  5431  		"pathName":   o.PathName,
  5432  		"zone":       APIDefaultZone,
  5433  		"id":         id,
  5434  	}
  5435  
  5436  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5437  	if err != nil {
  5438  		return nil, err
  5439  	}
  5440  	// build request body
  5441  	var body interface{}
  5442  
  5443  	// do request
  5444  	data, err := o.Client.Do(ctx, "GET", url, body)
  5445  	if err != nil {
  5446  		return nil, err
  5447  	}
  5448  
  5449  	// build results
  5450  	results, err := o.transformReadResults(data)
  5451  	if err != nil {
  5452  		return nil, err
  5453  	}
  5454  	return results.Icon, nil
  5455  }
  5456  
  5457  // Update is API call
  5458  func (o *IconOp) Update(ctx context.Context, id types.ID, param *IconUpdateRequest) (*Icon, error) {
  5459  	// build request URL
  5460  	pathBuildParameter := map[string]interface{}{
  5461  		"rootURL":    SakuraCloudAPIRoot,
  5462  		"pathSuffix": o.PathSuffix,
  5463  		"pathName":   o.PathName,
  5464  		"zone":       APIDefaultZone,
  5465  		"id":         id,
  5466  		"param":      param,
  5467  	}
  5468  
  5469  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5470  	if err != nil {
  5471  		return nil, err
  5472  	}
  5473  	// build request body
  5474  	var body interface{}
  5475  	v, err := o.transformUpdateArgs(id, param)
  5476  	if err != nil {
  5477  		return nil, err
  5478  	}
  5479  	body = v
  5480  
  5481  	// do request
  5482  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5483  	if err != nil {
  5484  		return nil, err
  5485  	}
  5486  
  5487  	// build results
  5488  	results, err := o.transformUpdateResults(data)
  5489  	if err != nil {
  5490  		return nil, err
  5491  	}
  5492  	return results.Icon, nil
  5493  }
  5494  
  5495  // Delete is API call
  5496  func (o *IconOp) Delete(ctx context.Context, id types.ID) error {
  5497  	// build request URL
  5498  	pathBuildParameter := map[string]interface{}{
  5499  		"rootURL":    SakuraCloudAPIRoot,
  5500  		"pathSuffix": o.PathSuffix,
  5501  		"pathName":   o.PathName,
  5502  		"zone":       APIDefaultZone,
  5503  		"id":         id,
  5504  	}
  5505  
  5506  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5507  	if err != nil {
  5508  		return err
  5509  	}
  5510  	// build request body
  5511  	var body interface{}
  5512  
  5513  	// do request
  5514  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  5515  	if err != nil {
  5516  		return err
  5517  	}
  5518  
  5519  	// build results
  5520  
  5521  	return nil
  5522  }
  5523  
  5524  /*************************************************
  5525  * InterfaceOp
  5526  *************************************************/
  5527  
  5528  // InterfaceOp implements InterfaceAPI interface
  5529  type InterfaceOp struct {
  5530  	// Client APICaller
  5531  	Client APICaller
  5532  	// PathSuffix is used when building URL
  5533  	PathSuffix string
  5534  	// PathName is used when building URL
  5535  	PathName string
  5536  }
  5537  
  5538  // NewInterfaceOp creates new InterfaceOp instance
  5539  func NewInterfaceOp(caller APICaller) InterfaceAPI {
  5540  	return GetClientFactoryFunc("Interface")(caller).(InterfaceAPI)
  5541  }
  5542  
  5543  // Find is API call
  5544  func (o *InterfaceOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*InterfaceFindResult, error) {
  5545  	// build request URL
  5546  	pathBuildParameter := map[string]interface{}{
  5547  		"rootURL":    SakuraCloudAPIRoot,
  5548  		"pathSuffix": o.PathSuffix,
  5549  		"pathName":   o.PathName,
  5550  		"zone":       zone,
  5551  		"conditions": conditions,
  5552  	}
  5553  
  5554  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5555  	if err != nil {
  5556  		return nil, err
  5557  	}
  5558  	// build request body
  5559  	var body interface{}
  5560  	v, err := o.transformFindArgs(conditions)
  5561  	if err != nil {
  5562  		return nil, err
  5563  	}
  5564  	body = v
  5565  
  5566  	// do request
  5567  	data, err := o.Client.Do(ctx, "GET", url, body)
  5568  	if err != nil {
  5569  		return nil, err
  5570  	}
  5571  
  5572  	// build results
  5573  	results, err := o.transformFindResults(data)
  5574  	if err != nil {
  5575  		return nil, err
  5576  	}
  5577  	return results, err
  5578  }
  5579  
  5580  // Create is API call
  5581  func (o *InterfaceOp) Create(ctx context.Context, zone string, param *InterfaceCreateRequest) (*Interface, error) {
  5582  	// build request URL
  5583  	pathBuildParameter := map[string]interface{}{
  5584  		"rootURL":    SakuraCloudAPIRoot,
  5585  		"pathSuffix": o.PathSuffix,
  5586  		"pathName":   o.PathName,
  5587  		"zone":       zone,
  5588  		"param":      param,
  5589  	}
  5590  
  5591  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5592  	if err != nil {
  5593  		return nil, err
  5594  	}
  5595  	// build request body
  5596  	var body interface{}
  5597  	v, err := o.transformCreateArgs(param)
  5598  	if err != nil {
  5599  		return nil, err
  5600  	}
  5601  	body = v
  5602  
  5603  	// do request
  5604  	data, err := o.Client.Do(ctx, "POST", url, body)
  5605  	if err != nil {
  5606  		return nil, err
  5607  	}
  5608  
  5609  	// build results
  5610  	results, err := o.transformCreateResults(data)
  5611  	if err != nil {
  5612  		return nil, err
  5613  	}
  5614  	return results.Interface, nil
  5615  }
  5616  
  5617  // Read is API call
  5618  func (o *InterfaceOp) Read(ctx context.Context, zone string, id types.ID) (*Interface, error) {
  5619  	// build request URL
  5620  	pathBuildParameter := map[string]interface{}{
  5621  		"rootURL":    SakuraCloudAPIRoot,
  5622  		"pathSuffix": o.PathSuffix,
  5623  		"pathName":   o.PathName,
  5624  		"zone":       zone,
  5625  		"id":         id,
  5626  	}
  5627  
  5628  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5629  	if err != nil {
  5630  		return nil, err
  5631  	}
  5632  	// build request body
  5633  	var body interface{}
  5634  
  5635  	// do request
  5636  	data, err := o.Client.Do(ctx, "GET", url, body)
  5637  	if err != nil {
  5638  		return nil, err
  5639  	}
  5640  
  5641  	// build results
  5642  	results, err := o.transformReadResults(data)
  5643  	if err != nil {
  5644  		return nil, err
  5645  	}
  5646  	return results.Interface, nil
  5647  }
  5648  
  5649  // Update is API call
  5650  func (o *InterfaceOp) Update(ctx context.Context, zone string, id types.ID, param *InterfaceUpdateRequest) (*Interface, error) {
  5651  	// build request URL
  5652  	pathBuildParameter := map[string]interface{}{
  5653  		"rootURL":    SakuraCloudAPIRoot,
  5654  		"pathSuffix": o.PathSuffix,
  5655  		"pathName":   o.PathName,
  5656  		"zone":       zone,
  5657  		"id":         id,
  5658  		"param":      param,
  5659  	}
  5660  
  5661  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5662  	if err != nil {
  5663  		return nil, err
  5664  	}
  5665  	// build request body
  5666  	var body interface{}
  5667  	v, err := o.transformUpdateArgs(id, param)
  5668  	if err != nil {
  5669  		return nil, err
  5670  	}
  5671  	body = v
  5672  
  5673  	// do request
  5674  	data, err := o.Client.Do(ctx, "PUT", url, body)
  5675  	if err != nil {
  5676  		return nil, err
  5677  	}
  5678  
  5679  	// build results
  5680  	results, err := o.transformUpdateResults(data)
  5681  	if err != nil {
  5682  		return nil, err
  5683  	}
  5684  	return results.Interface, nil
  5685  }
  5686  
  5687  // Delete is API call
  5688  func (o *InterfaceOp) Delete(ctx context.Context, zone string, id types.ID) error {
  5689  	// build request URL
  5690  	pathBuildParameter := map[string]interface{}{
  5691  		"rootURL":    SakuraCloudAPIRoot,
  5692  		"pathSuffix": o.PathSuffix,
  5693  		"pathName":   o.PathName,
  5694  		"zone":       zone,
  5695  		"id":         id,
  5696  	}
  5697  
  5698  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  5699  	if err != nil {
  5700  		return err
  5701  	}
  5702  	// build request body
  5703  	var body interface{}
  5704  
  5705  	// do request
  5706  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  5707  	if err != nil {
  5708  		return err
  5709  	}
  5710  
  5711  	// build results
  5712  
  5713  	return nil
  5714  }
  5715  
  5716  // Monitor is API call
  5717  func (o *InterfaceOp) Monitor(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*InterfaceActivity, error) {
  5718  	// build request URL
  5719  	pathBuildParameter := map[string]interface{}{
  5720  		"rootURL":    SakuraCloudAPIRoot,
  5721  		"pathSuffix": o.PathSuffix,
  5722  		"pathName":   o.PathName,
  5723  		"zone":       zone,
  5724  		"id":         id,
  5725  		"condition":  condition,
  5726  	}
  5727  
  5728  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
  5729  	if err != nil {
  5730  		return nil, err
  5731  	}
  5732  	// build request body
  5733  	var body interface{}
  5734  	v, err := o.transformMonitorArgs(id, condition)
  5735  	if err != nil {
  5736  		return nil, err
  5737  	}
  5738  	body = v
  5739  
  5740  	// do request
  5741  	data, err := o.Client.Do(ctx, "GET", url, body)
  5742  	if err != nil {
  5743  		return nil, err
  5744  	}
  5745  
  5746  	// build results
  5747  	results, err := o.transformMonitorResults(data)
  5748  	if err != nil {
  5749  		return nil, err
  5750  	}
  5751  	return results.InterfaceActivity, nil
  5752  }
  5753  
  5754  // ConnectToSharedSegment is API call
  5755  func (o *InterfaceOp) ConnectToSharedSegment(ctx context.Context, zone string, id types.ID) error {
  5756  	// build request URL
  5757  	pathBuildParameter := map[string]interface{}{
  5758  		"rootURL":    SakuraCloudAPIRoot,
  5759  		"pathSuffix": o.PathSuffix,
  5760  		"pathName":   o.PathName,
  5761  		"zone":       zone,
  5762  		"id":         id,
  5763  	}
  5764  
  5765  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/switch/shared", pathBuildParameter)
  5766  	if err != nil {
  5767  		return err
  5768  	}
  5769  	// build request body
  5770  	var body interface{}
  5771  
  5772  	// do request
  5773  	_, err = o.Client.Do(ctx, "PUT", url, body)
  5774  	if err != nil {
  5775  		return err
  5776  	}
  5777  
  5778  	// build results
  5779  
  5780  	return nil
  5781  }
  5782  
  5783  // ConnectToSwitch is API call
  5784  func (o *InterfaceOp) ConnectToSwitch(ctx context.Context, zone string, id types.ID, switchID types.ID) error {
  5785  	// build request URL
  5786  	pathBuildParameter := map[string]interface{}{
  5787  		"rootURL":    SakuraCloudAPIRoot,
  5788  		"pathSuffix": o.PathSuffix,
  5789  		"pathName":   o.PathName,
  5790  		"zone":       zone,
  5791  		"id":         id,
  5792  		"switchID":   switchID,
  5793  	}
  5794  
  5795  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/switch/{{.switchID}}", pathBuildParameter)
  5796  	if err != nil {
  5797  		return err
  5798  	}
  5799  	// build request body
  5800  	var body interface{}
  5801  
  5802  	// do request
  5803  	_, err = o.Client.Do(ctx, "PUT", url, body)
  5804  	if err != nil {
  5805  		return err
  5806  	}
  5807  
  5808  	// build results
  5809  
  5810  	return nil
  5811  }
  5812  
  5813  // DisconnectFromSwitch is API call
  5814  func (o *InterfaceOp) DisconnectFromSwitch(ctx context.Context, zone string, id types.ID) error {
  5815  	// build request URL
  5816  	pathBuildParameter := map[string]interface{}{
  5817  		"rootURL":    SakuraCloudAPIRoot,
  5818  		"pathSuffix": o.PathSuffix,
  5819  		"pathName":   o.PathName,
  5820  		"zone":       zone,
  5821  		"id":         id,
  5822  	}
  5823  
  5824  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/switch", pathBuildParameter)
  5825  	if err != nil {
  5826  		return err
  5827  	}
  5828  	// build request body
  5829  	var body interface{}
  5830  
  5831  	// do request
  5832  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  5833  	if err != nil {
  5834  		return err
  5835  	}
  5836  
  5837  	// build results
  5838  
  5839  	return nil
  5840  }
  5841  
  5842  // ConnectToPacketFilter is API call
  5843  func (o *InterfaceOp) ConnectToPacketFilter(ctx context.Context, zone string, id types.ID, packetFilterID types.ID) error {
  5844  	// build request URL
  5845  	pathBuildParameter := map[string]interface{}{
  5846  		"rootURL":        SakuraCloudAPIRoot,
  5847  		"pathSuffix":     o.PathSuffix,
  5848  		"pathName":       o.PathName,
  5849  		"zone":           zone,
  5850  		"id":             id,
  5851  		"packetFilterID": packetFilterID,
  5852  	}
  5853  
  5854  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/packetfilter/{{.packetFilterID}}", pathBuildParameter)
  5855  	if err != nil {
  5856  		return err
  5857  	}
  5858  	// build request body
  5859  	var body interface{}
  5860  
  5861  	// do request
  5862  	_, err = o.Client.Do(ctx, "PUT", url, body)
  5863  	if err != nil {
  5864  		return err
  5865  	}
  5866  
  5867  	// build results
  5868  
  5869  	return nil
  5870  }
  5871  
  5872  // DisconnectFromPacketFilter is API call
  5873  func (o *InterfaceOp) DisconnectFromPacketFilter(ctx context.Context, zone string, id types.ID) error {
  5874  	// build request URL
  5875  	pathBuildParameter := map[string]interface{}{
  5876  		"rootURL":    SakuraCloudAPIRoot,
  5877  		"pathSuffix": o.PathSuffix,
  5878  		"pathName":   o.PathName,
  5879  		"zone":       zone,
  5880  		"id":         id,
  5881  	}
  5882  
  5883  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/packetfilter", pathBuildParameter)
  5884  	if err != nil {
  5885  		return err
  5886  	}
  5887  	// build request body
  5888  	var body interface{}
  5889  
  5890  	// do request
  5891  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  5892  	if err != nil {
  5893  		return err
  5894  	}
  5895  
  5896  	// build results
  5897  
  5898  	return nil
  5899  }
  5900  
  5901  /*************************************************
  5902  * InternetOp
  5903  *************************************************/
  5904  
  5905  // InternetOp implements InternetAPI interface
  5906  type InternetOp struct {
  5907  	// Client APICaller
  5908  	Client APICaller
  5909  	// PathSuffix is used when building URL
  5910  	PathSuffix string
  5911  	// PathName is used when building URL
  5912  	PathName string
  5913  }
  5914  
  5915  // NewInternetOp creates new InternetOp instance
  5916  func NewInternetOp(caller APICaller) InternetAPI {
  5917  	return GetClientFactoryFunc("Internet")(caller).(InternetAPI)
  5918  }
  5919  
  5920  // Find is API call
  5921  func (o *InternetOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*InternetFindResult, error) {
  5922  	// build request URL
  5923  	pathBuildParameter := map[string]interface{}{
  5924  		"rootURL":    SakuraCloudAPIRoot,
  5925  		"pathSuffix": o.PathSuffix,
  5926  		"pathName":   o.PathName,
  5927  		"zone":       zone,
  5928  		"conditions": conditions,
  5929  	}
  5930  
  5931  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5932  	if err != nil {
  5933  		return nil, err
  5934  	}
  5935  	// build request body
  5936  	var body interface{}
  5937  	v, err := o.transformFindArgs(conditions)
  5938  	if err != nil {
  5939  		return nil, err
  5940  	}
  5941  	body = v
  5942  
  5943  	// do request
  5944  	data, err := o.Client.Do(ctx, "GET", url, body)
  5945  	if err != nil {
  5946  		return nil, err
  5947  	}
  5948  
  5949  	// build results
  5950  	results, err := o.transformFindResults(data)
  5951  	if err != nil {
  5952  		return nil, err
  5953  	}
  5954  	return results, err
  5955  }
  5956  
  5957  // Create is API call
  5958  func (o *InternetOp) Create(ctx context.Context, zone string, param *InternetCreateRequest) (*Internet, error) {
  5959  	// build request URL
  5960  	pathBuildParameter := map[string]interface{}{
  5961  		"rootURL":    SakuraCloudAPIRoot,
  5962  		"pathSuffix": o.PathSuffix,
  5963  		"pathName":   o.PathName,
  5964  		"zone":       zone,
  5965  		"param":      param,
  5966  	}
  5967  
  5968  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  5969  	if err != nil {
  5970  		return nil, err
  5971  	}
  5972  	// build request body
  5973  	var body interface{}
  5974  	v, err := o.transformCreateArgs(param)
  5975  	if err != nil {
  5976  		return nil, err
  5977  	}
  5978  	body = v
  5979  
  5980  	// do request
  5981  	data, err := o.Client.Do(ctx, "POST", url, body)
  5982  	if err != nil {
  5983  		return nil, err
  5984  	}
  5985  
  5986  	// build results
  5987  	results, err := o.transformCreateResults(data)
  5988  	if err != nil {
  5989  		return nil, err
  5990  	}
  5991  	return results.Internet, nil
  5992  }
  5993  
  5994  // Read is API call
  5995  func (o *InternetOp) Read(ctx context.Context, zone string, id types.ID) (*Internet, error) {
  5996  	// build request URL
  5997  	pathBuildParameter := map[string]interface{}{
  5998  		"rootURL":    SakuraCloudAPIRoot,
  5999  		"pathSuffix": o.PathSuffix,
  6000  		"pathName":   o.PathName,
  6001  		"zone":       zone,
  6002  		"id":         id,
  6003  	}
  6004  
  6005  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6006  	if err != nil {
  6007  		return nil, err
  6008  	}
  6009  	// build request body
  6010  	var body interface{}
  6011  
  6012  	// do request
  6013  	data, err := o.Client.Do(ctx, "GET", url, body)
  6014  	if err != nil {
  6015  		return nil, err
  6016  	}
  6017  
  6018  	// build results
  6019  	results, err := o.transformReadResults(data)
  6020  	if err != nil {
  6021  		return nil, err
  6022  	}
  6023  	return results.Internet, nil
  6024  }
  6025  
  6026  // Update is API call
  6027  func (o *InternetOp) Update(ctx context.Context, zone string, id types.ID, param *InternetUpdateRequest) (*Internet, error) {
  6028  	// build request URL
  6029  	pathBuildParameter := map[string]interface{}{
  6030  		"rootURL":    SakuraCloudAPIRoot,
  6031  		"pathSuffix": o.PathSuffix,
  6032  		"pathName":   o.PathName,
  6033  		"zone":       zone,
  6034  		"id":         id,
  6035  		"param":      param,
  6036  	}
  6037  
  6038  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6039  	if err != nil {
  6040  		return nil, err
  6041  	}
  6042  	// build request body
  6043  	var body interface{}
  6044  	v, err := o.transformUpdateArgs(id, param)
  6045  	if err != nil {
  6046  		return nil, err
  6047  	}
  6048  	body = v
  6049  
  6050  	// do request
  6051  	data, err := o.Client.Do(ctx, "PUT", url, body)
  6052  	if err != nil {
  6053  		return nil, err
  6054  	}
  6055  
  6056  	// build results
  6057  	results, err := o.transformUpdateResults(data)
  6058  	if err != nil {
  6059  		return nil, err
  6060  	}
  6061  	return results.Internet, nil
  6062  }
  6063  
  6064  // Delete is API call
  6065  func (o *InternetOp) Delete(ctx context.Context, zone string, id types.ID) error {
  6066  	// build request URL
  6067  	pathBuildParameter := map[string]interface{}{
  6068  		"rootURL":    SakuraCloudAPIRoot,
  6069  		"pathSuffix": o.PathSuffix,
  6070  		"pathName":   o.PathName,
  6071  		"zone":       zone,
  6072  		"id":         id,
  6073  	}
  6074  
  6075  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6076  	if err != nil {
  6077  		return err
  6078  	}
  6079  	// build request body
  6080  	var body interface{}
  6081  
  6082  	// do request
  6083  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  6084  	if err != nil {
  6085  		return err
  6086  	}
  6087  
  6088  	// build results
  6089  
  6090  	return nil
  6091  }
  6092  
  6093  // UpdateBandWidth is API call
  6094  func (o *InternetOp) UpdateBandWidth(ctx context.Context, zone string, id types.ID, param *InternetUpdateBandWidthRequest) (*Internet, error) {
  6095  	// build request URL
  6096  	pathBuildParameter := map[string]interface{}{
  6097  		"rootURL":    SakuraCloudAPIRoot,
  6098  		"pathSuffix": o.PathSuffix,
  6099  		"pathName":   o.PathName,
  6100  		"zone":       zone,
  6101  		"id":         id,
  6102  		"param":      param,
  6103  	}
  6104  
  6105  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/bandwidth", pathBuildParameter)
  6106  	if err != nil {
  6107  		return nil, err
  6108  	}
  6109  	// build request body
  6110  	var body interface{}
  6111  	v, err := o.transformUpdateBandWidthArgs(id, param)
  6112  	if err != nil {
  6113  		return nil, err
  6114  	}
  6115  	body = v
  6116  
  6117  	// do request
  6118  	data, err := o.Client.Do(ctx, "PUT", url, body)
  6119  	if err != nil {
  6120  		return nil, err
  6121  	}
  6122  
  6123  	// build results
  6124  	results, err := o.transformUpdateBandWidthResults(data)
  6125  	if err != nil {
  6126  		return nil, err
  6127  	}
  6128  	return results.Internet, nil
  6129  }
  6130  
  6131  // AddSubnet is API call
  6132  func (o *InternetOp) AddSubnet(ctx context.Context, zone string, id types.ID, param *InternetAddSubnetRequest) (*InternetSubnetOperationResult, error) {
  6133  	// build request URL
  6134  	pathBuildParameter := map[string]interface{}{
  6135  		"rootURL":    SakuraCloudAPIRoot,
  6136  		"pathSuffix": o.PathSuffix,
  6137  		"pathName":   o.PathName,
  6138  		"zone":       zone,
  6139  		"id":         id,
  6140  		"param":      param,
  6141  	}
  6142  
  6143  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/subnet", pathBuildParameter)
  6144  	if err != nil {
  6145  		return nil, err
  6146  	}
  6147  	// build request body
  6148  	var body interface{}
  6149  	v, err := o.transformAddSubnetArgs(id, param)
  6150  	if err != nil {
  6151  		return nil, err
  6152  	}
  6153  	body = v
  6154  
  6155  	// do request
  6156  	data, err := o.Client.Do(ctx, "POST", url, body)
  6157  	if err != nil {
  6158  		return nil, err
  6159  	}
  6160  
  6161  	// build results
  6162  	results, err := o.transformAddSubnetResults(data)
  6163  	if err != nil {
  6164  		return nil, err
  6165  	}
  6166  	return results.Subnet, nil
  6167  }
  6168  
  6169  // UpdateSubnet is API call
  6170  func (o *InternetOp) UpdateSubnet(ctx context.Context, zone string, id types.ID, subnetID types.ID, param *InternetUpdateSubnetRequest) (*InternetSubnetOperationResult, error) {
  6171  	// build request URL
  6172  	pathBuildParameter := map[string]interface{}{
  6173  		"rootURL":    SakuraCloudAPIRoot,
  6174  		"pathSuffix": o.PathSuffix,
  6175  		"pathName":   o.PathName,
  6176  		"zone":       zone,
  6177  		"id":         id,
  6178  		"subnetID":   subnetID,
  6179  		"param":      param,
  6180  	}
  6181  
  6182  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/subnet/{{.subnetID}}", pathBuildParameter)
  6183  	if err != nil {
  6184  		return nil, err
  6185  	}
  6186  	// build request body
  6187  	var body interface{}
  6188  	v, err := o.transformUpdateSubnetArgs(id, subnetID, param)
  6189  	if err != nil {
  6190  		return nil, err
  6191  	}
  6192  	body = v
  6193  
  6194  	// do request
  6195  	data, err := o.Client.Do(ctx, "PUT", url, body)
  6196  	if err != nil {
  6197  		return nil, err
  6198  	}
  6199  
  6200  	// build results
  6201  	results, err := o.transformUpdateSubnetResults(data)
  6202  	if err != nil {
  6203  		return nil, err
  6204  	}
  6205  	return results.Subnet, nil
  6206  }
  6207  
  6208  // DeleteSubnet is API call
  6209  func (o *InternetOp) DeleteSubnet(ctx context.Context, zone string, id types.ID, subnetID types.ID) error {
  6210  	// build request URL
  6211  	pathBuildParameter := map[string]interface{}{
  6212  		"rootURL":    SakuraCloudAPIRoot,
  6213  		"pathSuffix": o.PathSuffix,
  6214  		"pathName":   o.PathName,
  6215  		"zone":       zone,
  6216  		"id":         id,
  6217  		"subnetID":   subnetID,
  6218  	}
  6219  
  6220  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/subnet/{{.subnetID}}", pathBuildParameter)
  6221  	if err != nil {
  6222  		return err
  6223  	}
  6224  	// build request body
  6225  	var body interface{}
  6226  
  6227  	// do request
  6228  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  6229  	if err != nil {
  6230  		return err
  6231  	}
  6232  
  6233  	// build results
  6234  
  6235  	return nil
  6236  }
  6237  
  6238  // Monitor is API call
  6239  func (o *InternetOp) Monitor(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*RouterActivity, error) {
  6240  	// build request URL
  6241  	pathBuildParameter := map[string]interface{}{
  6242  		"rootURL":    SakuraCloudAPIRoot,
  6243  		"pathSuffix": o.PathSuffix,
  6244  		"pathName":   o.PathName,
  6245  		"zone":       zone,
  6246  		"id":         id,
  6247  		"condition":  condition,
  6248  	}
  6249  
  6250  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
  6251  	if err != nil {
  6252  		return nil, err
  6253  	}
  6254  	// build request body
  6255  	var body interface{}
  6256  	v, err := o.transformMonitorArgs(id, condition)
  6257  	if err != nil {
  6258  		return nil, err
  6259  	}
  6260  	body = v
  6261  
  6262  	// do request
  6263  	data, err := o.Client.Do(ctx, "GET", url, body)
  6264  	if err != nil {
  6265  		return nil, err
  6266  	}
  6267  
  6268  	// build results
  6269  	results, err := o.transformMonitorResults(data)
  6270  	if err != nil {
  6271  		return nil, err
  6272  	}
  6273  	return results.RouterActivity, nil
  6274  }
  6275  
  6276  // MonitorRouter is API call
  6277  func (o *InternetOp) MonitorRouter(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*RouterActivity, error) {
  6278  	// build request URL
  6279  	pathBuildParameter := map[string]interface{}{
  6280  		"rootURL":    SakuraCloudAPIRoot,
  6281  		"pathSuffix": o.PathSuffix,
  6282  		"pathName":   o.PathName,
  6283  		"zone":       zone,
  6284  		"id":         id,
  6285  		"condition":  condition,
  6286  	}
  6287  
  6288  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
  6289  	if err != nil {
  6290  		return nil, err
  6291  	}
  6292  	// build request body
  6293  	var body interface{}
  6294  	v, err := o.transformMonitorRouterArgs(id, condition)
  6295  	if err != nil {
  6296  		return nil, err
  6297  	}
  6298  	body = v
  6299  
  6300  	// do request
  6301  	data, err := o.Client.Do(ctx, "GET", url, body)
  6302  	if err != nil {
  6303  		return nil, err
  6304  	}
  6305  
  6306  	// build results
  6307  	results, err := o.transformMonitorRouterResults(data)
  6308  	if err != nil {
  6309  		return nil, err
  6310  	}
  6311  	return results.RouterActivity, nil
  6312  }
  6313  
  6314  // EnableIPv6 is API call
  6315  func (o *InternetOp) EnableIPv6(ctx context.Context, zone string, id types.ID) (*IPv6NetInfo, error) {
  6316  	// build request URL
  6317  	pathBuildParameter := map[string]interface{}{
  6318  		"rootURL":    SakuraCloudAPIRoot,
  6319  		"pathSuffix": o.PathSuffix,
  6320  		"pathName":   o.PathName,
  6321  		"zone":       zone,
  6322  		"id":         id,
  6323  	}
  6324  
  6325  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ipv6net", pathBuildParameter)
  6326  	if err != nil {
  6327  		return nil, err
  6328  	}
  6329  	// build request body
  6330  	var body interface{}
  6331  
  6332  	// do request
  6333  	data, err := o.Client.Do(ctx, "POST", url, body)
  6334  	if err != nil {
  6335  		return nil, err
  6336  	}
  6337  
  6338  	// build results
  6339  	results, err := o.transformEnableIPv6Results(data)
  6340  	if err != nil {
  6341  		return nil, err
  6342  	}
  6343  	return results.IPv6Net, nil
  6344  }
  6345  
  6346  // DisableIPv6 is API call
  6347  func (o *InternetOp) DisableIPv6(ctx context.Context, zone string, id types.ID, ipv6netID types.ID) error {
  6348  	// build request URL
  6349  	pathBuildParameter := map[string]interface{}{
  6350  		"rootURL":    SakuraCloudAPIRoot,
  6351  		"pathSuffix": o.PathSuffix,
  6352  		"pathName":   o.PathName,
  6353  		"zone":       zone,
  6354  		"id":         id,
  6355  		"ipv6netID":  ipv6netID,
  6356  	}
  6357  
  6358  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/ipv6net/{{.ipv6netID}}", pathBuildParameter)
  6359  	if err != nil {
  6360  		return err
  6361  	}
  6362  	// build request body
  6363  	var body interface{}
  6364  
  6365  	// do request
  6366  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  6367  	if err != nil {
  6368  		return err
  6369  	}
  6370  
  6371  	// build results
  6372  
  6373  	return nil
  6374  }
  6375  
  6376  /*************************************************
  6377  * InternetPlanOp
  6378  *************************************************/
  6379  
  6380  // InternetPlanOp implements InternetPlanAPI interface
  6381  type InternetPlanOp struct {
  6382  	// Client APICaller
  6383  	Client APICaller
  6384  	// PathSuffix is used when building URL
  6385  	PathSuffix string
  6386  	// PathName is used when building URL
  6387  	PathName string
  6388  }
  6389  
  6390  // NewInternetPlanOp creates new InternetPlanOp instance
  6391  func NewInternetPlanOp(caller APICaller) InternetPlanAPI {
  6392  	return GetClientFactoryFunc("InternetPlan")(caller).(InternetPlanAPI)
  6393  }
  6394  
  6395  // Find is API call
  6396  func (o *InternetPlanOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*InternetPlanFindResult, error) {
  6397  	// build request URL
  6398  	pathBuildParameter := map[string]interface{}{
  6399  		"rootURL":    SakuraCloudAPIRoot,
  6400  		"pathSuffix": o.PathSuffix,
  6401  		"pathName":   o.PathName,
  6402  		"zone":       zone,
  6403  		"conditions": conditions,
  6404  	}
  6405  
  6406  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6407  	if err != nil {
  6408  		return nil, err
  6409  	}
  6410  	// build request body
  6411  	var body interface{}
  6412  	v, err := o.transformFindArgs(conditions)
  6413  	if err != nil {
  6414  		return nil, err
  6415  	}
  6416  	body = v
  6417  
  6418  	// do request
  6419  	data, err := o.Client.Do(ctx, "GET", url, body)
  6420  	if err != nil {
  6421  		return nil, err
  6422  	}
  6423  
  6424  	// build results
  6425  	results, err := o.transformFindResults(data)
  6426  	if err != nil {
  6427  		return nil, err
  6428  	}
  6429  	return results, err
  6430  }
  6431  
  6432  // Read is API call
  6433  func (o *InternetPlanOp) Read(ctx context.Context, zone string, id types.ID) (*InternetPlan, error) {
  6434  	// build request URL
  6435  	pathBuildParameter := map[string]interface{}{
  6436  		"rootURL":    SakuraCloudAPIRoot,
  6437  		"pathSuffix": o.PathSuffix,
  6438  		"pathName":   o.PathName,
  6439  		"zone":       zone,
  6440  		"id":         id,
  6441  	}
  6442  
  6443  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6444  	if err != nil {
  6445  		return nil, err
  6446  	}
  6447  	// build request body
  6448  	var body interface{}
  6449  
  6450  	// do request
  6451  	data, err := o.Client.Do(ctx, "GET", url, body)
  6452  	if err != nil {
  6453  		return nil, err
  6454  	}
  6455  
  6456  	// build results
  6457  	results, err := o.transformReadResults(data)
  6458  	if err != nil {
  6459  		return nil, err
  6460  	}
  6461  	return results.InternetPlan, nil
  6462  }
  6463  
  6464  /*************************************************
  6465  * IPAddressOp
  6466  *************************************************/
  6467  
  6468  // IPAddressOp implements IPAddressAPI interface
  6469  type IPAddressOp struct {
  6470  	// Client APICaller
  6471  	Client APICaller
  6472  	// PathSuffix is used when building URL
  6473  	PathSuffix string
  6474  	// PathName is used when building URL
  6475  	PathName string
  6476  }
  6477  
  6478  // NewIPAddressOp creates new IPAddressOp instance
  6479  func NewIPAddressOp(caller APICaller) IPAddressAPI {
  6480  	return GetClientFactoryFunc("IPAddress")(caller).(IPAddressAPI)
  6481  }
  6482  
  6483  // List is API call
  6484  func (o *IPAddressOp) List(ctx context.Context, zone string) (*IPAddressListResult, error) {
  6485  	// build request URL
  6486  	pathBuildParameter := map[string]interface{}{
  6487  		"rootURL":    SakuraCloudAPIRoot,
  6488  		"pathSuffix": o.PathSuffix,
  6489  		"pathName":   o.PathName,
  6490  		"zone":       zone,
  6491  	}
  6492  
  6493  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6494  	if err != nil {
  6495  		return nil, err
  6496  	}
  6497  	// build request body
  6498  	var body interface{}
  6499  
  6500  	// do request
  6501  	data, err := o.Client.Do(ctx, "GET", url, body)
  6502  	if err != nil {
  6503  		return nil, err
  6504  	}
  6505  
  6506  	// build results
  6507  	results, err := o.transformListResults(data)
  6508  	if err != nil {
  6509  		return nil, err
  6510  	}
  6511  	return results, err
  6512  }
  6513  
  6514  // Read is API call
  6515  func (o *IPAddressOp) Read(ctx context.Context, zone string, ipAddress string) (*IPAddress, error) {
  6516  	// build request URL
  6517  	pathBuildParameter := map[string]interface{}{
  6518  		"rootURL":    SakuraCloudAPIRoot,
  6519  		"pathSuffix": o.PathSuffix,
  6520  		"pathName":   o.PathName,
  6521  		"zone":       zone,
  6522  		"ipAddress":  ipAddress,
  6523  	}
  6524  
  6525  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.ipAddress}}", pathBuildParameter)
  6526  	if err != nil {
  6527  		return nil, err
  6528  	}
  6529  	// build request body
  6530  	var body interface{}
  6531  
  6532  	// do request
  6533  	data, err := o.Client.Do(ctx, "GET", url, body)
  6534  	if err != nil {
  6535  		return nil, err
  6536  	}
  6537  
  6538  	// build results
  6539  	results, err := o.transformReadResults(data)
  6540  	if err != nil {
  6541  		return nil, err
  6542  	}
  6543  	return results.IPAddress, nil
  6544  }
  6545  
  6546  // UpdateHostName is API call
  6547  func (o *IPAddressOp) UpdateHostName(ctx context.Context, zone string, ipAddress string, hostName string) (*IPAddress, error) {
  6548  	// build request URL
  6549  	pathBuildParameter := map[string]interface{}{
  6550  		"rootURL":    SakuraCloudAPIRoot,
  6551  		"pathSuffix": o.PathSuffix,
  6552  		"pathName":   o.PathName,
  6553  		"zone":       zone,
  6554  		"ipAddress":  ipAddress,
  6555  		"hostName":   hostName,
  6556  	}
  6557  
  6558  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.ipAddress}}", pathBuildParameter)
  6559  	if err != nil {
  6560  		return nil, err
  6561  	}
  6562  	// build request body
  6563  	var body interface{}
  6564  	v, err := o.transformUpdateHostNameArgs(ipAddress, hostName)
  6565  	if err != nil {
  6566  		return nil, err
  6567  	}
  6568  	body = v
  6569  
  6570  	// do request
  6571  	data, err := o.Client.Do(ctx, "PUT", url, body)
  6572  	if err != nil {
  6573  		return nil, err
  6574  	}
  6575  
  6576  	// build results
  6577  	results, err := o.transformUpdateHostNameResults(data)
  6578  	if err != nil {
  6579  		return nil, err
  6580  	}
  6581  	return results.IPAddress, nil
  6582  }
  6583  
  6584  /*************************************************
  6585  * IPv6NetOp
  6586  *************************************************/
  6587  
  6588  // IPv6NetOp implements IPv6NetAPI interface
  6589  type IPv6NetOp struct {
  6590  	// Client APICaller
  6591  	Client APICaller
  6592  	// PathSuffix is used when building URL
  6593  	PathSuffix string
  6594  	// PathName is used when building URL
  6595  	PathName string
  6596  }
  6597  
  6598  // NewIPv6NetOp creates new IPv6NetOp instance
  6599  func NewIPv6NetOp(caller APICaller) IPv6NetAPI {
  6600  	return GetClientFactoryFunc("IPv6Net")(caller).(IPv6NetAPI)
  6601  }
  6602  
  6603  // List is API call
  6604  func (o *IPv6NetOp) List(ctx context.Context, zone string) (*IPv6NetListResult, error) {
  6605  	// build request URL
  6606  	pathBuildParameter := map[string]interface{}{
  6607  		"rootURL":    SakuraCloudAPIRoot,
  6608  		"pathSuffix": o.PathSuffix,
  6609  		"pathName":   o.PathName,
  6610  		"zone":       zone,
  6611  	}
  6612  
  6613  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6614  	if err != nil {
  6615  		return nil, err
  6616  	}
  6617  	// build request body
  6618  	var body interface{}
  6619  
  6620  	// do request
  6621  	data, err := o.Client.Do(ctx, "GET", url, body)
  6622  	if err != nil {
  6623  		return nil, err
  6624  	}
  6625  
  6626  	// build results
  6627  	results, err := o.transformListResults(data)
  6628  	if err != nil {
  6629  		return nil, err
  6630  	}
  6631  	return results, err
  6632  }
  6633  
  6634  // Find is API call
  6635  func (o *IPv6NetOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*IPv6NetFindResult, error) {
  6636  	// build request URL
  6637  	pathBuildParameter := map[string]interface{}{
  6638  		"rootURL":    SakuraCloudAPIRoot,
  6639  		"pathSuffix": o.PathSuffix,
  6640  		"pathName":   o.PathName,
  6641  		"zone":       zone,
  6642  		"conditions": conditions,
  6643  	}
  6644  
  6645  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6646  	if err != nil {
  6647  		return nil, err
  6648  	}
  6649  	// build request body
  6650  	var body interface{}
  6651  	v, err := o.transformFindArgs(conditions)
  6652  	if err != nil {
  6653  		return nil, err
  6654  	}
  6655  	body = v
  6656  
  6657  	// do request
  6658  	data, err := o.Client.Do(ctx, "GET", url, body)
  6659  	if err != nil {
  6660  		return nil, err
  6661  	}
  6662  
  6663  	// build results
  6664  	results, err := o.transformFindResults(data)
  6665  	if err != nil {
  6666  		return nil, err
  6667  	}
  6668  	return results, err
  6669  }
  6670  
  6671  // Read is API call
  6672  func (o *IPv6NetOp) Read(ctx context.Context, zone string, id types.ID) (*IPv6Net, error) {
  6673  	// build request URL
  6674  	pathBuildParameter := map[string]interface{}{
  6675  		"rootURL":    SakuraCloudAPIRoot,
  6676  		"pathSuffix": o.PathSuffix,
  6677  		"pathName":   o.PathName,
  6678  		"zone":       zone,
  6679  		"id":         id,
  6680  	}
  6681  
  6682  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6683  	if err != nil {
  6684  		return nil, err
  6685  	}
  6686  	// build request body
  6687  	var body interface{}
  6688  
  6689  	// do request
  6690  	data, err := o.Client.Do(ctx, "GET", url, body)
  6691  	if err != nil {
  6692  		return nil, err
  6693  	}
  6694  
  6695  	// build results
  6696  	results, err := o.transformReadResults(data)
  6697  	if err != nil {
  6698  		return nil, err
  6699  	}
  6700  	return results.IPv6Net, nil
  6701  }
  6702  
  6703  /*************************************************
  6704  * IPv6AddrOp
  6705  *************************************************/
  6706  
  6707  // IPv6AddrOp implements IPv6AddrAPI interface
  6708  type IPv6AddrOp struct {
  6709  	// Client APICaller
  6710  	Client APICaller
  6711  	// PathSuffix is used when building URL
  6712  	PathSuffix string
  6713  	// PathName is used when building URL
  6714  	PathName string
  6715  }
  6716  
  6717  // NewIPv6AddrOp creates new IPv6AddrOp instance
  6718  func NewIPv6AddrOp(caller APICaller) IPv6AddrAPI {
  6719  	return GetClientFactoryFunc("IPv6Addr")(caller).(IPv6AddrAPI)
  6720  }
  6721  
  6722  // Find is API call
  6723  func (o *IPv6AddrOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*IPv6AddrFindResult, error) {
  6724  	// build request URL
  6725  	pathBuildParameter := map[string]interface{}{
  6726  		"rootURL":    SakuraCloudAPIRoot,
  6727  		"pathSuffix": o.PathSuffix,
  6728  		"pathName":   o.PathName,
  6729  		"zone":       zone,
  6730  		"conditions": conditions,
  6731  	}
  6732  
  6733  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6734  	if err != nil {
  6735  		return nil, err
  6736  	}
  6737  	// build request body
  6738  	var body interface{}
  6739  	v, err := o.transformFindArgs(conditions)
  6740  	if err != nil {
  6741  		return nil, err
  6742  	}
  6743  	body = v
  6744  
  6745  	// do request
  6746  	data, err := o.Client.Do(ctx, "GET", url, body)
  6747  	if err != nil {
  6748  		return nil, err
  6749  	}
  6750  
  6751  	// build results
  6752  	results, err := o.transformFindResults(data)
  6753  	if err != nil {
  6754  		return nil, err
  6755  	}
  6756  	return results, err
  6757  }
  6758  
  6759  // Create is API call
  6760  func (o *IPv6AddrOp) Create(ctx context.Context, zone string, param *IPv6AddrCreateRequest) (*IPv6Addr, error) {
  6761  	// build request URL
  6762  	pathBuildParameter := map[string]interface{}{
  6763  		"rootURL":    SakuraCloudAPIRoot,
  6764  		"pathSuffix": o.PathSuffix,
  6765  		"pathName":   o.PathName,
  6766  		"zone":       zone,
  6767  		"param":      param,
  6768  	}
  6769  
  6770  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6771  	if err != nil {
  6772  		return nil, err
  6773  	}
  6774  	// build request body
  6775  	var body interface{}
  6776  	v, err := o.transformCreateArgs(param)
  6777  	if err != nil {
  6778  		return nil, err
  6779  	}
  6780  	body = v
  6781  
  6782  	// do request
  6783  	data, err := o.Client.Do(ctx, "POST", url, body)
  6784  	if err != nil {
  6785  		return nil, err
  6786  	}
  6787  
  6788  	// build results
  6789  	results, err := o.transformCreateResults(data)
  6790  	if err != nil {
  6791  		return nil, err
  6792  	}
  6793  	return results.IPv6Addr, nil
  6794  }
  6795  
  6796  // Read is API call
  6797  func (o *IPv6AddrOp) Read(ctx context.Context, zone string, ipv6addr string) (*IPv6Addr, error) {
  6798  	// build request URL
  6799  	pathBuildParameter := map[string]interface{}{
  6800  		"rootURL":    SakuraCloudAPIRoot,
  6801  		"pathSuffix": o.PathSuffix,
  6802  		"pathName":   o.PathName,
  6803  		"zone":       zone,
  6804  		"id":         ipv6addr,
  6805  	}
  6806  
  6807  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6808  	if err != nil {
  6809  		return nil, err
  6810  	}
  6811  	// build request body
  6812  	var body interface{}
  6813  
  6814  	// do request
  6815  	data, err := o.Client.Do(ctx, "GET", url, body)
  6816  	if err != nil {
  6817  		return nil, err
  6818  	}
  6819  
  6820  	// build results
  6821  	results, err := o.transformReadResults(data)
  6822  	if err != nil {
  6823  		return nil, err
  6824  	}
  6825  	return results.IPv6Addr, nil
  6826  }
  6827  
  6828  // Update is API call
  6829  func (o *IPv6AddrOp) Update(ctx context.Context, zone string, ipv6addr string, param *IPv6AddrUpdateRequest) (*IPv6Addr, error) {
  6830  	// build request URL
  6831  	pathBuildParameter := map[string]interface{}{
  6832  		"rootURL":    SakuraCloudAPIRoot,
  6833  		"pathSuffix": o.PathSuffix,
  6834  		"pathName":   o.PathName,
  6835  		"zone":       zone,
  6836  		"id":         ipv6addr,
  6837  		"param":      param,
  6838  	}
  6839  
  6840  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6841  	if err != nil {
  6842  		return nil, err
  6843  	}
  6844  	// build request body
  6845  	var body interface{}
  6846  	v, err := o.transformUpdateArgs(ipv6addr, param)
  6847  	if err != nil {
  6848  		return nil, err
  6849  	}
  6850  	body = v
  6851  
  6852  	// do request
  6853  	data, err := o.Client.Do(ctx, "PUT", url, body)
  6854  	if err != nil {
  6855  		return nil, err
  6856  	}
  6857  
  6858  	// build results
  6859  	results, err := o.transformUpdateResults(data)
  6860  	if err != nil {
  6861  		return nil, err
  6862  	}
  6863  	return results.IPv6Addr, nil
  6864  }
  6865  
  6866  // Delete is API call
  6867  func (o *IPv6AddrOp) Delete(ctx context.Context, zone string, ipv6addr string) error {
  6868  	// build request URL
  6869  	pathBuildParameter := map[string]interface{}{
  6870  		"rootURL":    SakuraCloudAPIRoot,
  6871  		"pathSuffix": o.PathSuffix,
  6872  		"pathName":   o.PathName,
  6873  		"zone":       zone,
  6874  		"id":         ipv6addr,
  6875  	}
  6876  
  6877  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  6878  	if err != nil {
  6879  		return err
  6880  	}
  6881  	// build request body
  6882  	var body interface{}
  6883  
  6884  	// do request
  6885  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  6886  	if err != nil {
  6887  		return err
  6888  	}
  6889  
  6890  	// build results
  6891  
  6892  	return nil
  6893  }
  6894  
  6895  /*************************************************
  6896  * LicenseOp
  6897  *************************************************/
  6898  
  6899  // LicenseOp implements LicenseAPI interface
  6900  type LicenseOp struct {
  6901  	// Client APICaller
  6902  	Client APICaller
  6903  	// PathSuffix is used when building URL
  6904  	PathSuffix string
  6905  	// PathName is used when building URL
  6906  	PathName string
  6907  }
  6908  
  6909  // NewLicenseOp creates new LicenseOp instance
  6910  func NewLicenseOp(caller APICaller) LicenseAPI {
  6911  	return GetClientFactoryFunc("License")(caller).(LicenseAPI)
  6912  }
  6913  
  6914  // Find is API call
  6915  func (o *LicenseOp) Find(ctx context.Context, conditions *FindCondition) (*LicenseFindResult, error) {
  6916  	// build request URL
  6917  	pathBuildParameter := map[string]interface{}{
  6918  		"rootURL":    SakuraCloudAPIRoot,
  6919  		"pathSuffix": o.PathSuffix,
  6920  		"pathName":   o.PathName,
  6921  		"zone":       APIDefaultZone,
  6922  		"conditions": conditions,
  6923  	}
  6924  
  6925  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6926  	if err != nil {
  6927  		return nil, err
  6928  	}
  6929  	// build request body
  6930  	var body interface{}
  6931  	v, err := o.transformFindArgs(conditions)
  6932  	if err != nil {
  6933  		return nil, err
  6934  	}
  6935  	body = v
  6936  
  6937  	// do request
  6938  	data, err := o.Client.Do(ctx, "GET", url, body)
  6939  	if err != nil {
  6940  		return nil, err
  6941  	}
  6942  
  6943  	// build results
  6944  	results, err := o.transformFindResults(data)
  6945  	if err != nil {
  6946  		return nil, err
  6947  	}
  6948  	return results, err
  6949  }
  6950  
  6951  // Create is API call
  6952  func (o *LicenseOp) Create(ctx context.Context, param *LicenseCreateRequest) (*License, error) {
  6953  	// build request URL
  6954  	pathBuildParameter := map[string]interface{}{
  6955  		"rootURL":    SakuraCloudAPIRoot,
  6956  		"pathSuffix": o.PathSuffix,
  6957  		"pathName":   o.PathName,
  6958  		"zone":       APIDefaultZone,
  6959  		"param":      param,
  6960  	}
  6961  
  6962  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  6963  	if err != nil {
  6964  		return nil, err
  6965  	}
  6966  	// build request body
  6967  	var body interface{}
  6968  	v, err := o.transformCreateArgs(param)
  6969  	if err != nil {
  6970  		return nil, err
  6971  	}
  6972  	body = v
  6973  
  6974  	// do request
  6975  	data, err := o.Client.Do(ctx, "POST", url, body)
  6976  	if err != nil {
  6977  		return nil, err
  6978  	}
  6979  
  6980  	// build results
  6981  	results, err := o.transformCreateResults(data)
  6982  	if err != nil {
  6983  		return nil, err
  6984  	}
  6985  	return results.License, nil
  6986  }
  6987  
  6988  // Read is API call
  6989  func (o *LicenseOp) Read(ctx context.Context, id types.ID) (*License, error) {
  6990  	// build request URL
  6991  	pathBuildParameter := map[string]interface{}{
  6992  		"rootURL":    SakuraCloudAPIRoot,
  6993  		"pathSuffix": o.PathSuffix,
  6994  		"pathName":   o.PathName,
  6995  		"zone":       APIDefaultZone,
  6996  		"id":         id,
  6997  	}
  6998  
  6999  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7000  	if err != nil {
  7001  		return nil, err
  7002  	}
  7003  	// build request body
  7004  	var body interface{}
  7005  
  7006  	// do request
  7007  	data, err := o.Client.Do(ctx, "GET", url, body)
  7008  	if err != nil {
  7009  		return nil, err
  7010  	}
  7011  
  7012  	// build results
  7013  	results, err := o.transformReadResults(data)
  7014  	if err != nil {
  7015  		return nil, err
  7016  	}
  7017  	return results.License, nil
  7018  }
  7019  
  7020  // Update is API call
  7021  func (o *LicenseOp) Update(ctx context.Context, id types.ID, param *LicenseUpdateRequest) (*License, error) {
  7022  	// build request URL
  7023  	pathBuildParameter := map[string]interface{}{
  7024  		"rootURL":    SakuraCloudAPIRoot,
  7025  		"pathSuffix": o.PathSuffix,
  7026  		"pathName":   o.PathName,
  7027  		"zone":       APIDefaultZone,
  7028  		"id":         id,
  7029  		"param":      param,
  7030  	}
  7031  
  7032  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7033  	if err != nil {
  7034  		return nil, err
  7035  	}
  7036  	// build request body
  7037  	var body interface{}
  7038  	v, err := o.transformUpdateArgs(id, param)
  7039  	if err != nil {
  7040  		return nil, err
  7041  	}
  7042  	body = v
  7043  
  7044  	// do request
  7045  	data, err := o.Client.Do(ctx, "PUT", url, body)
  7046  	if err != nil {
  7047  		return nil, err
  7048  	}
  7049  
  7050  	// build results
  7051  	results, err := o.transformUpdateResults(data)
  7052  	if err != nil {
  7053  		return nil, err
  7054  	}
  7055  	return results.License, nil
  7056  }
  7057  
  7058  // Delete is API call
  7059  func (o *LicenseOp) Delete(ctx context.Context, id types.ID) error {
  7060  	// build request URL
  7061  	pathBuildParameter := map[string]interface{}{
  7062  		"rootURL":    SakuraCloudAPIRoot,
  7063  		"pathSuffix": o.PathSuffix,
  7064  		"pathName":   o.PathName,
  7065  		"zone":       APIDefaultZone,
  7066  		"id":         id,
  7067  	}
  7068  
  7069  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7070  	if err != nil {
  7071  		return err
  7072  	}
  7073  	// build request body
  7074  	var body interface{}
  7075  
  7076  	// do request
  7077  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  7078  	if err != nil {
  7079  		return err
  7080  	}
  7081  
  7082  	// build results
  7083  
  7084  	return nil
  7085  }
  7086  
  7087  /*************************************************
  7088  * LicenseInfoOp
  7089  *************************************************/
  7090  
  7091  // LicenseInfoOp implements LicenseInfoAPI interface
  7092  type LicenseInfoOp struct {
  7093  	// Client APICaller
  7094  	Client APICaller
  7095  	// PathSuffix is used when building URL
  7096  	PathSuffix string
  7097  	// PathName is used when building URL
  7098  	PathName string
  7099  }
  7100  
  7101  // NewLicenseInfoOp creates new LicenseInfoOp instance
  7102  func NewLicenseInfoOp(caller APICaller) LicenseInfoAPI {
  7103  	return GetClientFactoryFunc("LicenseInfo")(caller).(LicenseInfoAPI)
  7104  }
  7105  
  7106  // Find is API call
  7107  func (o *LicenseInfoOp) Find(ctx context.Context, conditions *FindCondition) (*LicenseInfoFindResult, error) {
  7108  	// build request URL
  7109  	pathBuildParameter := map[string]interface{}{
  7110  		"rootURL":    SakuraCloudAPIRoot,
  7111  		"pathSuffix": o.PathSuffix,
  7112  		"pathName":   o.PathName,
  7113  		"zone":       APIDefaultZone,
  7114  		"conditions": conditions,
  7115  	}
  7116  
  7117  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7118  	if err != nil {
  7119  		return nil, err
  7120  	}
  7121  	// build request body
  7122  	var body interface{}
  7123  	v, err := o.transformFindArgs(conditions)
  7124  	if err != nil {
  7125  		return nil, err
  7126  	}
  7127  	body = v
  7128  
  7129  	// do request
  7130  	data, err := o.Client.Do(ctx, "GET", url, body)
  7131  	if err != nil {
  7132  		return nil, err
  7133  	}
  7134  
  7135  	// build results
  7136  	results, err := o.transformFindResults(data)
  7137  	if err != nil {
  7138  		return nil, err
  7139  	}
  7140  	return results, err
  7141  }
  7142  
  7143  // Read is API call
  7144  func (o *LicenseInfoOp) Read(ctx context.Context, id types.ID) (*LicenseInfo, error) {
  7145  	// build request URL
  7146  	pathBuildParameter := map[string]interface{}{
  7147  		"rootURL":    SakuraCloudAPIRoot,
  7148  		"pathSuffix": o.PathSuffix,
  7149  		"pathName":   o.PathName,
  7150  		"zone":       APIDefaultZone,
  7151  		"id":         id,
  7152  	}
  7153  
  7154  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7155  	if err != nil {
  7156  		return nil, err
  7157  	}
  7158  	// build request body
  7159  	var body interface{}
  7160  
  7161  	// do request
  7162  	data, err := o.Client.Do(ctx, "GET", url, body)
  7163  	if err != nil {
  7164  		return nil, err
  7165  	}
  7166  
  7167  	// build results
  7168  	results, err := o.transformReadResults(data)
  7169  	if err != nil {
  7170  		return nil, err
  7171  	}
  7172  	return results.LicenseInfo, nil
  7173  }
  7174  
  7175  /*************************************************
  7176  * LoadBalancerOp
  7177  *************************************************/
  7178  
  7179  // LoadBalancerOp implements LoadBalancerAPI interface
  7180  type LoadBalancerOp struct {
  7181  	// Client APICaller
  7182  	Client APICaller
  7183  	// PathSuffix is used when building URL
  7184  	PathSuffix string
  7185  	// PathName is used when building URL
  7186  	PathName string
  7187  }
  7188  
  7189  // NewLoadBalancerOp creates new LoadBalancerOp instance
  7190  func NewLoadBalancerOp(caller APICaller) LoadBalancerAPI {
  7191  	return GetClientFactoryFunc("LoadBalancer")(caller).(LoadBalancerAPI)
  7192  }
  7193  
  7194  // Find is API call
  7195  func (o *LoadBalancerOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*LoadBalancerFindResult, error) {
  7196  	// build request URL
  7197  	pathBuildParameter := map[string]interface{}{
  7198  		"rootURL":    SakuraCloudAPIRoot,
  7199  		"pathSuffix": o.PathSuffix,
  7200  		"pathName":   o.PathName,
  7201  		"zone":       zone,
  7202  		"conditions": conditions,
  7203  	}
  7204  
  7205  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7206  	if err != nil {
  7207  		return nil, err
  7208  	}
  7209  	// build request body
  7210  	var body interface{}
  7211  	v, err := o.transformFindArgs(conditions)
  7212  	if err != nil {
  7213  		return nil, err
  7214  	}
  7215  	body = v
  7216  
  7217  	// do request
  7218  	data, err := o.Client.Do(ctx, "GET", url, body)
  7219  	if err != nil {
  7220  		return nil, err
  7221  	}
  7222  
  7223  	// build results
  7224  	results, err := o.transformFindResults(data)
  7225  	if err != nil {
  7226  		return nil, err
  7227  	}
  7228  	return results, err
  7229  }
  7230  
  7231  // Create is API call
  7232  func (o *LoadBalancerOp) Create(ctx context.Context, zone string, param *LoadBalancerCreateRequest) (*LoadBalancer, error) {
  7233  	// build request URL
  7234  	pathBuildParameter := map[string]interface{}{
  7235  		"rootURL":    SakuraCloudAPIRoot,
  7236  		"pathSuffix": o.PathSuffix,
  7237  		"pathName":   o.PathName,
  7238  		"zone":       zone,
  7239  		"param":      param,
  7240  	}
  7241  
  7242  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7243  	if err != nil {
  7244  		return nil, err
  7245  	}
  7246  	// build request body
  7247  	var body interface{}
  7248  	v, err := o.transformCreateArgs(param)
  7249  	if err != nil {
  7250  		return nil, err
  7251  	}
  7252  	body = v
  7253  
  7254  	// do request
  7255  	data, err := o.Client.Do(ctx, "POST", url, body)
  7256  	if err != nil {
  7257  		return nil, err
  7258  	}
  7259  
  7260  	// build results
  7261  	results, err := o.transformCreateResults(data)
  7262  	if err != nil {
  7263  		return nil, err
  7264  	}
  7265  	return results.LoadBalancer, nil
  7266  }
  7267  
  7268  // Read is API call
  7269  func (o *LoadBalancerOp) Read(ctx context.Context, zone string, id types.ID) (*LoadBalancer, error) {
  7270  	// build request URL
  7271  	pathBuildParameter := map[string]interface{}{
  7272  		"rootURL":    SakuraCloudAPIRoot,
  7273  		"pathSuffix": o.PathSuffix,
  7274  		"pathName":   o.PathName,
  7275  		"zone":       zone,
  7276  		"id":         id,
  7277  	}
  7278  
  7279  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7280  	if err != nil {
  7281  		return nil, err
  7282  	}
  7283  	// build request body
  7284  	var body interface{}
  7285  
  7286  	// do request
  7287  	data, err := o.Client.Do(ctx, "GET", url, body)
  7288  	if err != nil {
  7289  		return nil, err
  7290  	}
  7291  
  7292  	// build results
  7293  	results, err := o.transformReadResults(data)
  7294  	if err != nil {
  7295  		return nil, err
  7296  	}
  7297  	return results.LoadBalancer, nil
  7298  }
  7299  
  7300  // Update is API call
  7301  func (o *LoadBalancerOp) Update(ctx context.Context, zone string, id types.ID, param *LoadBalancerUpdateRequest) (*LoadBalancer, error) {
  7302  	// build request URL
  7303  	pathBuildParameter := map[string]interface{}{
  7304  		"rootURL":    SakuraCloudAPIRoot,
  7305  		"pathSuffix": o.PathSuffix,
  7306  		"pathName":   o.PathName,
  7307  		"zone":       zone,
  7308  		"id":         id,
  7309  		"param":      param,
  7310  	}
  7311  
  7312  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7313  	if err != nil {
  7314  		return nil, err
  7315  	}
  7316  	// build request body
  7317  	var body interface{}
  7318  	v, err := o.transformUpdateArgs(id, param)
  7319  	if err != nil {
  7320  		return nil, err
  7321  	}
  7322  	body = v
  7323  
  7324  	// do request
  7325  	data, err := o.Client.Do(ctx, "PUT", url, body)
  7326  	if err != nil {
  7327  		return nil, err
  7328  	}
  7329  
  7330  	// build results
  7331  	results, err := o.transformUpdateResults(data)
  7332  	if err != nil {
  7333  		return nil, err
  7334  	}
  7335  	return results.LoadBalancer, nil
  7336  }
  7337  
  7338  // UpdateSettings is API call
  7339  func (o *LoadBalancerOp) UpdateSettings(ctx context.Context, zone string, id types.ID, param *LoadBalancerUpdateSettingsRequest) (*LoadBalancer, error) {
  7340  	// build request URL
  7341  	pathBuildParameter := map[string]interface{}{
  7342  		"rootURL":    SakuraCloudAPIRoot,
  7343  		"pathSuffix": o.PathSuffix,
  7344  		"pathName":   o.PathName,
  7345  		"zone":       zone,
  7346  		"id":         id,
  7347  		"param":      param,
  7348  	}
  7349  
  7350  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7351  	if err != nil {
  7352  		return nil, err
  7353  	}
  7354  	// build request body
  7355  	var body interface{}
  7356  	v, err := o.transformUpdateSettingsArgs(id, param)
  7357  	if err != nil {
  7358  		return nil, err
  7359  	}
  7360  	body = v
  7361  
  7362  	// do request
  7363  	data, err := o.Client.Do(ctx, "PUT", url, body)
  7364  	if err != nil {
  7365  		return nil, err
  7366  	}
  7367  
  7368  	// build results
  7369  	results, err := o.transformUpdateSettingsResults(data)
  7370  	if err != nil {
  7371  		return nil, err
  7372  	}
  7373  	return results.LoadBalancer, nil
  7374  }
  7375  
  7376  // Delete is API call
  7377  func (o *LoadBalancerOp) Delete(ctx context.Context, zone string, id types.ID) error {
  7378  	// build request URL
  7379  	pathBuildParameter := map[string]interface{}{
  7380  		"rootURL":    SakuraCloudAPIRoot,
  7381  		"pathSuffix": o.PathSuffix,
  7382  		"pathName":   o.PathName,
  7383  		"zone":       zone,
  7384  		"id":         id,
  7385  	}
  7386  
  7387  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7388  	if err != nil {
  7389  		return err
  7390  	}
  7391  	// build request body
  7392  	var body interface{}
  7393  
  7394  	// do request
  7395  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  7396  	if err != nil {
  7397  		return err
  7398  	}
  7399  
  7400  	// build results
  7401  
  7402  	return nil
  7403  }
  7404  
  7405  // Config is API call
  7406  func (o *LoadBalancerOp) Config(ctx context.Context, zone string, id types.ID) error {
  7407  	// build request URL
  7408  	pathBuildParameter := map[string]interface{}{
  7409  		"rootURL":    SakuraCloudAPIRoot,
  7410  		"pathSuffix": o.PathSuffix,
  7411  		"pathName":   o.PathName,
  7412  		"zone":       zone,
  7413  		"id":         id,
  7414  	}
  7415  
  7416  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/config", pathBuildParameter)
  7417  	if err != nil {
  7418  		return err
  7419  	}
  7420  	// build request body
  7421  	var body interface{}
  7422  
  7423  	// do request
  7424  	_, err = o.Client.Do(ctx, "PUT", url, body)
  7425  	if err != nil {
  7426  		return err
  7427  	}
  7428  
  7429  	// build results
  7430  
  7431  	return nil
  7432  }
  7433  
  7434  // Boot is API call
  7435  func (o *LoadBalancerOp) Boot(ctx context.Context, zone string, id types.ID) error {
  7436  	// build request URL
  7437  	pathBuildParameter := map[string]interface{}{
  7438  		"rootURL":    SakuraCloudAPIRoot,
  7439  		"pathSuffix": o.PathSuffix,
  7440  		"pathName":   o.PathName,
  7441  		"zone":       zone,
  7442  		"id":         id,
  7443  	}
  7444  
  7445  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  7446  	if err != nil {
  7447  		return err
  7448  	}
  7449  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  7450  	if err != nil {
  7451  		return err
  7452  	}
  7453  	apiLocker.Lock(lockKey)
  7454  	defer apiLocker.Unlock(lockKey)
  7455  	// build request body
  7456  	var body interface{}
  7457  
  7458  	// do request
  7459  	_, err = o.Client.Do(ctx, "PUT", url, body)
  7460  	if err != nil {
  7461  		return err
  7462  	}
  7463  
  7464  	// build results
  7465  
  7466  	return nil
  7467  }
  7468  
  7469  // Shutdown is API call
  7470  func (o *LoadBalancerOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
  7471  	// build request URL
  7472  	pathBuildParameter := map[string]interface{}{
  7473  		"rootURL":        SakuraCloudAPIRoot,
  7474  		"pathSuffix":     o.PathSuffix,
  7475  		"pathName":       o.PathName,
  7476  		"zone":           zone,
  7477  		"id":             id,
  7478  		"shutdownOption": shutdownOption,
  7479  	}
  7480  
  7481  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  7482  	if err != nil {
  7483  		return err
  7484  	}
  7485  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  7486  	if err != nil {
  7487  		return err
  7488  	}
  7489  	apiLocker.Lock(lockKey)
  7490  	defer apiLocker.Unlock(lockKey)
  7491  	// build request body
  7492  	var body interface{}
  7493  	v, err := o.transformShutdownArgs(id, shutdownOption)
  7494  	if err != nil {
  7495  		return err
  7496  	}
  7497  	body = v
  7498  
  7499  	// do request
  7500  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  7501  	if err != nil {
  7502  		return err
  7503  	}
  7504  
  7505  	// build results
  7506  
  7507  	return nil
  7508  }
  7509  
  7510  // Reset is API call
  7511  func (o *LoadBalancerOp) Reset(ctx context.Context, zone string, id types.ID) error {
  7512  	// build request URL
  7513  	pathBuildParameter := map[string]interface{}{
  7514  		"rootURL":    SakuraCloudAPIRoot,
  7515  		"pathSuffix": o.PathSuffix,
  7516  		"pathName":   o.PathName,
  7517  		"zone":       zone,
  7518  		"id":         id,
  7519  	}
  7520  
  7521  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
  7522  	if err != nil {
  7523  		return err
  7524  	}
  7525  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  7526  	if err != nil {
  7527  		return err
  7528  	}
  7529  	apiLocker.Lock(lockKey)
  7530  	defer apiLocker.Unlock(lockKey)
  7531  	// build request body
  7532  	var body interface{}
  7533  
  7534  	// do request
  7535  	_, err = o.Client.Do(ctx, "PUT", url, body)
  7536  	if err != nil {
  7537  		return err
  7538  	}
  7539  
  7540  	// build results
  7541  
  7542  	return nil
  7543  }
  7544  
  7545  // MonitorCPU is API call
  7546  func (o *LoadBalancerOp) MonitorCPU(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
  7547  	// build request URL
  7548  	pathBuildParameter := map[string]interface{}{
  7549  		"rootURL":    SakuraCloudAPIRoot,
  7550  		"pathSuffix": o.PathSuffix,
  7551  		"pathName":   o.PathName,
  7552  		"zone":       zone,
  7553  		"id":         id,
  7554  		"condition":  condition,
  7555  	}
  7556  
  7557  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cpu/monitor", pathBuildParameter)
  7558  	if err != nil {
  7559  		return nil, err
  7560  	}
  7561  	// build request body
  7562  	var body interface{}
  7563  	v, err := o.transformMonitorCPUArgs(id, condition)
  7564  	if err != nil {
  7565  		return nil, err
  7566  	}
  7567  	body = v
  7568  
  7569  	// do request
  7570  	data, err := o.Client.Do(ctx, "GET", url, body)
  7571  	if err != nil {
  7572  		return nil, err
  7573  	}
  7574  
  7575  	// build results
  7576  	results, err := o.transformMonitorCPUResults(data)
  7577  	if err != nil {
  7578  		return nil, err
  7579  	}
  7580  	return results.CPUTimeActivity, nil
  7581  }
  7582  
  7583  // MonitorInterface is API call
  7584  func (o *LoadBalancerOp) MonitorInterface(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*InterfaceActivity, error) {
  7585  	// build request URL
  7586  	pathBuildParameter := map[string]interface{}{
  7587  		"rootURL":    SakuraCloudAPIRoot,
  7588  		"pathSuffix": o.PathSuffix,
  7589  		"pathName":   o.PathName,
  7590  		"zone":       zone,
  7591  		"id":         id,
  7592  		"condition":  condition,
  7593  	}
  7594  
  7595  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/monitor", pathBuildParameter)
  7596  	if err != nil {
  7597  		return nil, err
  7598  	}
  7599  	// build request body
  7600  	var body interface{}
  7601  	v, err := o.transformMonitorInterfaceArgs(id, condition)
  7602  	if err != nil {
  7603  		return nil, err
  7604  	}
  7605  	body = v
  7606  
  7607  	// do request
  7608  	data, err := o.Client.Do(ctx, "GET", url, body)
  7609  	if err != nil {
  7610  		return nil, err
  7611  	}
  7612  
  7613  	// build results
  7614  	results, err := o.transformMonitorInterfaceResults(data)
  7615  	if err != nil {
  7616  		return nil, err
  7617  	}
  7618  	return results.InterfaceActivity, nil
  7619  }
  7620  
  7621  // Status is API call
  7622  func (o *LoadBalancerOp) Status(ctx context.Context, zone string, id types.ID) (*LoadBalancerStatusResult, error) {
  7623  	// build request URL
  7624  	pathBuildParameter := map[string]interface{}{
  7625  		"rootURL":    SakuraCloudAPIRoot,
  7626  		"pathSuffix": o.PathSuffix,
  7627  		"pathName":   o.PathName,
  7628  		"zone":       zone,
  7629  		"id":         id,
  7630  	}
  7631  
  7632  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/status", pathBuildParameter)
  7633  	if err != nil {
  7634  		return nil, err
  7635  	}
  7636  	// build request body
  7637  	var body interface{}
  7638  
  7639  	// do request
  7640  	data, err := o.Client.Do(ctx, "GET", url, body)
  7641  	if err != nil {
  7642  		return nil, err
  7643  	}
  7644  
  7645  	// build results
  7646  	results, err := o.transformStatusResults(data)
  7647  	if err != nil {
  7648  		return nil, err
  7649  	}
  7650  	return results, err
  7651  }
  7652  
  7653  /*************************************************
  7654  * LocalRouterOp
  7655  *************************************************/
  7656  
  7657  // LocalRouterOp implements LocalRouterAPI interface
  7658  type LocalRouterOp struct {
  7659  	// Client APICaller
  7660  	Client APICaller
  7661  	// PathSuffix is used when building URL
  7662  	PathSuffix string
  7663  	// PathName is used when building URL
  7664  	PathName string
  7665  }
  7666  
  7667  // NewLocalRouterOp creates new LocalRouterOp instance
  7668  func NewLocalRouterOp(caller APICaller) LocalRouterAPI {
  7669  	return GetClientFactoryFunc("LocalRouter")(caller).(LocalRouterAPI)
  7670  }
  7671  
  7672  // Find is API call
  7673  func (o *LocalRouterOp) Find(ctx context.Context, conditions *FindCondition) (*LocalRouterFindResult, error) {
  7674  	// build request URL
  7675  	pathBuildParameter := map[string]interface{}{
  7676  		"rootURL":    SakuraCloudAPIRoot,
  7677  		"pathSuffix": o.PathSuffix,
  7678  		"pathName":   o.PathName,
  7679  		"zone":       APIDefaultZone,
  7680  		"conditions": conditions,
  7681  	}
  7682  
  7683  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7684  	if err != nil {
  7685  		return nil, err
  7686  	}
  7687  	// build request body
  7688  	var body interface{}
  7689  	v, err := o.transformFindArgs(conditions)
  7690  	if err != nil {
  7691  		return nil, err
  7692  	}
  7693  	body = v
  7694  
  7695  	// do request
  7696  	data, err := o.Client.Do(ctx, "GET", url, body)
  7697  	if err != nil {
  7698  		return nil, err
  7699  	}
  7700  
  7701  	// build results
  7702  	results, err := o.transformFindResults(data)
  7703  	if err != nil {
  7704  		return nil, err
  7705  	}
  7706  	return results, err
  7707  }
  7708  
  7709  // Create is API call
  7710  func (o *LocalRouterOp) Create(ctx context.Context, param *LocalRouterCreateRequest) (*LocalRouter, error) {
  7711  	// build request URL
  7712  	pathBuildParameter := map[string]interface{}{
  7713  		"rootURL":    SakuraCloudAPIRoot,
  7714  		"pathSuffix": o.PathSuffix,
  7715  		"pathName":   o.PathName,
  7716  		"zone":       APIDefaultZone,
  7717  		"param":      param,
  7718  	}
  7719  
  7720  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7721  	if err != nil {
  7722  		return nil, err
  7723  	}
  7724  	// build request body
  7725  	var body interface{}
  7726  	v, err := o.transformCreateArgs(param)
  7727  	if err != nil {
  7728  		return nil, err
  7729  	}
  7730  	body = v
  7731  
  7732  	// do request
  7733  	data, err := o.Client.Do(ctx, "POST", url, body)
  7734  	if err != nil {
  7735  		return nil, err
  7736  	}
  7737  
  7738  	// build results
  7739  	results, err := o.transformCreateResults(data)
  7740  	if err != nil {
  7741  		return nil, err
  7742  	}
  7743  	return results.LocalRouter, nil
  7744  }
  7745  
  7746  // Read is API call
  7747  func (o *LocalRouterOp) Read(ctx context.Context, id types.ID) (*LocalRouter, error) {
  7748  	// build request URL
  7749  	pathBuildParameter := map[string]interface{}{
  7750  		"rootURL":    SakuraCloudAPIRoot,
  7751  		"pathSuffix": o.PathSuffix,
  7752  		"pathName":   o.PathName,
  7753  		"zone":       APIDefaultZone,
  7754  		"id":         id,
  7755  	}
  7756  
  7757  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7758  	if err != nil {
  7759  		return nil, err
  7760  	}
  7761  	// build request body
  7762  	var body interface{}
  7763  
  7764  	// do request
  7765  	data, err := o.Client.Do(ctx, "GET", url, body)
  7766  	if err != nil {
  7767  		return nil, err
  7768  	}
  7769  
  7770  	// build results
  7771  	results, err := o.transformReadResults(data)
  7772  	if err != nil {
  7773  		return nil, err
  7774  	}
  7775  	return results.LocalRouter, nil
  7776  }
  7777  
  7778  // Update is API call
  7779  func (o *LocalRouterOp) Update(ctx context.Context, id types.ID, param *LocalRouterUpdateRequest) (*LocalRouter, error) {
  7780  	// build request URL
  7781  	pathBuildParameter := map[string]interface{}{
  7782  		"rootURL":    SakuraCloudAPIRoot,
  7783  		"pathSuffix": o.PathSuffix,
  7784  		"pathName":   o.PathName,
  7785  		"zone":       APIDefaultZone,
  7786  		"id":         id,
  7787  		"param":      param,
  7788  	}
  7789  
  7790  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7791  	if err != nil {
  7792  		return nil, err
  7793  	}
  7794  	// build request body
  7795  	var body interface{}
  7796  	v, err := o.transformUpdateArgs(id, param)
  7797  	if err != nil {
  7798  		return nil, err
  7799  	}
  7800  	body = v
  7801  
  7802  	// do request
  7803  	data, err := o.Client.Do(ctx, "PUT", url, body)
  7804  	if err != nil {
  7805  		return nil, err
  7806  	}
  7807  
  7808  	// build results
  7809  	results, err := o.transformUpdateResults(data)
  7810  	if err != nil {
  7811  		return nil, err
  7812  	}
  7813  	return results.LocalRouter, nil
  7814  }
  7815  
  7816  // UpdateSettings is API call
  7817  func (o *LocalRouterOp) UpdateSettings(ctx context.Context, id types.ID, param *LocalRouterUpdateSettingsRequest) (*LocalRouter, error) {
  7818  	// build request URL
  7819  	pathBuildParameter := map[string]interface{}{
  7820  		"rootURL":    SakuraCloudAPIRoot,
  7821  		"pathSuffix": o.PathSuffix,
  7822  		"pathName":   o.PathName,
  7823  		"zone":       APIDefaultZone,
  7824  		"id":         id,
  7825  		"param":      param,
  7826  	}
  7827  
  7828  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7829  	if err != nil {
  7830  		return nil, err
  7831  	}
  7832  	// build request body
  7833  	var body interface{}
  7834  	v, err := o.transformUpdateSettingsArgs(id, param)
  7835  	if err != nil {
  7836  		return nil, err
  7837  	}
  7838  	body = v
  7839  
  7840  	// do request
  7841  	data, err := o.Client.Do(ctx, "PUT", url, body)
  7842  	if err != nil {
  7843  		return nil, err
  7844  	}
  7845  
  7846  	// build results
  7847  	results, err := o.transformUpdateSettingsResults(data)
  7848  	if err != nil {
  7849  		return nil, err
  7850  	}
  7851  	return results.LocalRouter, nil
  7852  }
  7853  
  7854  // Delete is API call
  7855  func (o *LocalRouterOp) Delete(ctx context.Context, id types.ID) error {
  7856  	// build request URL
  7857  	pathBuildParameter := map[string]interface{}{
  7858  		"rootURL":    SakuraCloudAPIRoot,
  7859  		"pathSuffix": o.PathSuffix,
  7860  		"pathName":   o.PathName,
  7861  		"zone":       APIDefaultZone,
  7862  		"id":         id,
  7863  	}
  7864  
  7865  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  7866  	if err != nil {
  7867  		return err
  7868  	}
  7869  	// build request body
  7870  	var body interface{}
  7871  
  7872  	// do request
  7873  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  7874  	if err != nil {
  7875  		return err
  7876  	}
  7877  
  7878  	// build results
  7879  
  7880  	return nil
  7881  }
  7882  
  7883  // HealthStatus is API call
  7884  func (o *LocalRouterOp) HealthStatus(ctx context.Context, id types.ID) (*LocalRouterHealth, error) {
  7885  	// build request URL
  7886  	pathBuildParameter := map[string]interface{}{
  7887  		"rootURL":    SakuraCloudAPIRoot,
  7888  		"pathSuffix": o.PathSuffix,
  7889  		"pathName":   o.PathName,
  7890  		"zone":       APIDefaultZone,
  7891  		"id":         id,
  7892  	}
  7893  
  7894  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/health", pathBuildParameter)
  7895  	if err != nil {
  7896  		return nil, err
  7897  	}
  7898  	// build request body
  7899  	var body interface{}
  7900  
  7901  	// do request
  7902  	data, err := o.Client.Do(ctx, "GET", url, body)
  7903  	if err != nil {
  7904  		return nil, err
  7905  	}
  7906  
  7907  	// build results
  7908  	results, err := o.transformHealthStatusResults(data)
  7909  	if err != nil {
  7910  		return nil, err
  7911  	}
  7912  	return results.LocalRouterHealth, nil
  7913  }
  7914  
  7915  // MonitorLocalRouter is API call
  7916  func (o *LocalRouterOp) MonitorLocalRouter(ctx context.Context, id types.ID, condition *MonitorCondition) (*LocalRouterActivity, error) {
  7917  	// build request URL
  7918  	pathBuildParameter := map[string]interface{}{
  7919  		"rootURL":    SakuraCloudAPIRoot,
  7920  		"pathSuffix": o.PathSuffix,
  7921  		"pathName":   o.PathName,
  7922  		"zone":       APIDefaultZone,
  7923  		"id":         id,
  7924  		"condition":  condition,
  7925  	}
  7926  
  7927  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/activity/localrouter/monitor", pathBuildParameter)
  7928  	if err != nil {
  7929  		return nil, err
  7930  	}
  7931  	// build request body
  7932  	var body interface{}
  7933  	v, err := o.transformMonitorLocalRouterArgs(id, condition)
  7934  	if err != nil {
  7935  		return nil, err
  7936  	}
  7937  	body = v
  7938  
  7939  	// do request
  7940  	data, err := o.Client.Do(ctx, "GET", url, body)
  7941  	if err != nil {
  7942  		return nil, err
  7943  	}
  7944  
  7945  	// build results
  7946  	results, err := o.transformMonitorLocalRouterResults(data)
  7947  	if err != nil {
  7948  		return nil, err
  7949  	}
  7950  	return results.LocalRouterActivity, nil
  7951  }
  7952  
  7953  /*************************************************
  7954  * MobileGatewayOp
  7955  *************************************************/
  7956  
  7957  // MobileGatewayOp implements MobileGatewayAPI interface
  7958  type MobileGatewayOp struct {
  7959  	// Client APICaller
  7960  	Client APICaller
  7961  	// PathSuffix is used when building URL
  7962  	PathSuffix string
  7963  	// PathName is used when building URL
  7964  	PathName string
  7965  }
  7966  
  7967  // NewMobileGatewayOp creates new MobileGatewayOp instance
  7968  func NewMobileGatewayOp(caller APICaller) MobileGatewayAPI {
  7969  	return GetClientFactoryFunc("MobileGateway")(caller).(MobileGatewayAPI)
  7970  }
  7971  
  7972  // Find is API call
  7973  func (o *MobileGatewayOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*MobileGatewayFindResult, error) {
  7974  	// build request URL
  7975  	pathBuildParameter := map[string]interface{}{
  7976  		"rootURL":    SakuraCloudAPIRoot,
  7977  		"pathSuffix": o.PathSuffix,
  7978  		"pathName":   o.PathName,
  7979  		"zone":       zone,
  7980  		"conditions": conditions,
  7981  	}
  7982  
  7983  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  7984  	if err != nil {
  7985  		return nil, err
  7986  	}
  7987  	// build request body
  7988  	var body interface{}
  7989  	v, err := o.transformFindArgs(conditions)
  7990  	if err != nil {
  7991  		return nil, err
  7992  	}
  7993  	body = v
  7994  
  7995  	// do request
  7996  	data, err := o.Client.Do(ctx, "GET", url, body)
  7997  	if err != nil {
  7998  		return nil, err
  7999  	}
  8000  
  8001  	// build results
  8002  	results, err := o.transformFindResults(data)
  8003  	if err != nil {
  8004  		return nil, err
  8005  	}
  8006  	return results, err
  8007  }
  8008  
  8009  // Create is API call
  8010  func (o *MobileGatewayOp) Create(ctx context.Context, zone string, param *MobileGatewayCreateRequest) (*MobileGateway, error) {
  8011  	// build request URL
  8012  	pathBuildParameter := map[string]interface{}{
  8013  		"rootURL":    SakuraCloudAPIRoot,
  8014  		"pathSuffix": o.PathSuffix,
  8015  		"pathName":   o.PathName,
  8016  		"zone":       zone,
  8017  		"param":      param,
  8018  	}
  8019  
  8020  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  8021  	if err != nil {
  8022  		return nil, err
  8023  	}
  8024  	// build request body
  8025  	var body interface{}
  8026  	v, err := o.transformCreateArgs(param)
  8027  	if err != nil {
  8028  		return nil, err
  8029  	}
  8030  	body = v
  8031  
  8032  	// do request
  8033  	data, err := o.Client.Do(ctx, "POST", url, body)
  8034  	if err != nil {
  8035  		return nil, err
  8036  	}
  8037  
  8038  	// build results
  8039  	results, err := o.transformCreateResults(data)
  8040  	if err != nil {
  8041  		return nil, err
  8042  	}
  8043  	return results.MobileGateway, nil
  8044  }
  8045  
  8046  // Read is API call
  8047  func (o *MobileGatewayOp) Read(ctx context.Context, zone string, id types.ID) (*MobileGateway, error) {
  8048  	// build request URL
  8049  	pathBuildParameter := map[string]interface{}{
  8050  		"rootURL":    SakuraCloudAPIRoot,
  8051  		"pathSuffix": o.PathSuffix,
  8052  		"pathName":   o.PathName,
  8053  		"zone":       zone,
  8054  		"id":         id,
  8055  	}
  8056  
  8057  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8058  	if err != nil {
  8059  		return nil, err
  8060  	}
  8061  	// build request body
  8062  	var body interface{}
  8063  
  8064  	// do request
  8065  	data, err := o.Client.Do(ctx, "GET", url, body)
  8066  	if err != nil {
  8067  		return nil, err
  8068  	}
  8069  
  8070  	// build results
  8071  	results, err := o.transformReadResults(data)
  8072  	if err != nil {
  8073  		return nil, err
  8074  	}
  8075  	return results.MobileGateway, nil
  8076  }
  8077  
  8078  // Update is API call
  8079  func (o *MobileGatewayOp) Update(ctx context.Context, zone string, id types.ID, param *MobileGatewayUpdateRequest) (*MobileGateway, error) {
  8080  	// build request URL
  8081  	pathBuildParameter := map[string]interface{}{
  8082  		"rootURL":    SakuraCloudAPIRoot,
  8083  		"pathSuffix": o.PathSuffix,
  8084  		"pathName":   o.PathName,
  8085  		"zone":       zone,
  8086  		"id":         id,
  8087  		"param":      param,
  8088  	}
  8089  
  8090  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8091  	if err != nil {
  8092  		return nil, err
  8093  	}
  8094  	// build request body
  8095  	var body interface{}
  8096  	v, err := o.transformUpdateArgs(id, param)
  8097  	if err != nil {
  8098  		return nil, err
  8099  	}
  8100  	body = v
  8101  
  8102  	// do request
  8103  	data, err := o.Client.Do(ctx, "PUT", url, body)
  8104  	if err != nil {
  8105  		return nil, err
  8106  	}
  8107  
  8108  	// build results
  8109  	results, err := o.transformUpdateResults(data)
  8110  	if err != nil {
  8111  		return nil, err
  8112  	}
  8113  	return results.MobileGateway, nil
  8114  }
  8115  
  8116  // UpdateSettings is API call
  8117  func (o *MobileGatewayOp) UpdateSettings(ctx context.Context, zone string, id types.ID, param *MobileGatewayUpdateSettingsRequest) (*MobileGateway, error) {
  8118  	// build request URL
  8119  	pathBuildParameter := map[string]interface{}{
  8120  		"rootURL":    SakuraCloudAPIRoot,
  8121  		"pathSuffix": o.PathSuffix,
  8122  		"pathName":   o.PathName,
  8123  		"zone":       zone,
  8124  		"id":         id,
  8125  		"param":      param,
  8126  	}
  8127  
  8128  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8129  	if err != nil {
  8130  		return nil, err
  8131  	}
  8132  	// build request body
  8133  	var body interface{}
  8134  	v, err := o.transformUpdateSettingsArgs(id, param)
  8135  	if err != nil {
  8136  		return nil, err
  8137  	}
  8138  	body = v
  8139  
  8140  	// do request
  8141  	data, err := o.Client.Do(ctx, "PUT", url, body)
  8142  	if err != nil {
  8143  		return nil, err
  8144  	}
  8145  
  8146  	// build results
  8147  	results, err := o.transformUpdateSettingsResults(data)
  8148  	if err != nil {
  8149  		return nil, err
  8150  	}
  8151  	return results.MobileGateway, nil
  8152  }
  8153  
  8154  // Delete is API call
  8155  func (o *MobileGatewayOp) Delete(ctx context.Context, zone string, id types.ID) error {
  8156  	// build request URL
  8157  	pathBuildParameter := map[string]interface{}{
  8158  		"rootURL":    SakuraCloudAPIRoot,
  8159  		"pathSuffix": o.PathSuffix,
  8160  		"pathName":   o.PathName,
  8161  		"zone":       zone,
  8162  		"id":         id,
  8163  	}
  8164  
  8165  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8166  	if err != nil {
  8167  		return err
  8168  	}
  8169  	// build request body
  8170  	var body interface{}
  8171  
  8172  	// do request
  8173  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8174  	if err != nil {
  8175  		return err
  8176  	}
  8177  
  8178  	// build results
  8179  
  8180  	return nil
  8181  }
  8182  
  8183  // Config is API call
  8184  func (o *MobileGatewayOp) Config(ctx context.Context, zone string, id types.ID) error {
  8185  	// build request URL
  8186  	pathBuildParameter := map[string]interface{}{
  8187  		"rootURL":    SakuraCloudAPIRoot,
  8188  		"pathSuffix": o.PathSuffix,
  8189  		"pathName":   o.PathName,
  8190  		"zone":       zone,
  8191  		"id":         id,
  8192  	}
  8193  
  8194  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/config", pathBuildParameter)
  8195  	if err != nil {
  8196  		return err
  8197  	}
  8198  	// build request body
  8199  	var body interface{}
  8200  
  8201  	// do request
  8202  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8203  	if err != nil {
  8204  		return err
  8205  	}
  8206  
  8207  	// build results
  8208  
  8209  	return nil
  8210  }
  8211  
  8212  // Boot is API call
  8213  func (o *MobileGatewayOp) Boot(ctx context.Context, zone string, id types.ID) error {
  8214  	// build request URL
  8215  	pathBuildParameter := map[string]interface{}{
  8216  		"rootURL":    SakuraCloudAPIRoot,
  8217  		"pathSuffix": o.PathSuffix,
  8218  		"pathName":   o.PathName,
  8219  		"zone":       zone,
  8220  		"id":         id,
  8221  	}
  8222  
  8223  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  8224  	if err != nil {
  8225  		return err
  8226  	}
  8227  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  8228  	if err != nil {
  8229  		return err
  8230  	}
  8231  	apiLocker.Lock(lockKey)
  8232  	defer apiLocker.Unlock(lockKey)
  8233  	// build request body
  8234  	var body interface{}
  8235  
  8236  	// do request
  8237  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8238  	if err != nil {
  8239  		return err
  8240  	}
  8241  
  8242  	// build results
  8243  
  8244  	return nil
  8245  }
  8246  
  8247  // Shutdown is API call
  8248  func (o *MobileGatewayOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
  8249  	// build request URL
  8250  	pathBuildParameter := map[string]interface{}{
  8251  		"rootURL":        SakuraCloudAPIRoot,
  8252  		"pathSuffix":     o.PathSuffix,
  8253  		"pathName":       o.PathName,
  8254  		"zone":           zone,
  8255  		"id":             id,
  8256  		"shutdownOption": shutdownOption,
  8257  	}
  8258  
  8259  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  8260  	if err != nil {
  8261  		return err
  8262  	}
  8263  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  8264  	if err != nil {
  8265  		return err
  8266  	}
  8267  	apiLocker.Lock(lockKey)
  8268  	defer apiLocker.Unlock(lockKey)
  8269  	// build request body
  8270  	var body interface{}
  8271  	v, err := o.transformShutdownArgs(id, shutdownOption)
  8272  	if err != nil {
  8273  		return err
  8274  	}
  8275  	body = v
  8276  
  8277  	// do request
  8278  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8279  	if err != nil {
  8280  		return err
  8281  	}
  8282  
  8283  	// build results
  8284  
  8285  	return nil
  8286  }
  8287  
  8288  // Reset is API call
  8289  func (o *MobileGatewayOp) Reset(ctx context.Context, zone string, id types.ID) error {
  8290  	// build request URL
  8291  	pathBuildParameter := map[string]interface{}{
  8292  		"rootURL":    SakuraCloudAPIRoot,
  8293  		"pathSuffix": o.PathSuffix,
  8294  		"pathName":   o.PathName,
  8295  		"zone":       zone,
  8296  		"id":         id,
  8297  	}
  8298  
  8299  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
  8300  	if err != nil {
  8301  		return err
  8302  	}
  8303  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  8304  	if err != nil {
  8305  		return err
  8306  	}
  8307  	apiLocker.Lock(lockKey)
  8308  	defer apiLocker.Unlock(lockKey)
  8309  	// build request body
  8310  	var body interface{}
  8311  
  8312  	// do request
  8313  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8314  	if err != nil {
  8315  		return err
  8316  	}
  8317  
  8318  	// build results
  8319  
  8320  	return nil
  8321  }
  8322  
  8323  // ConnectToSwitch is API call
  8324  func (o *MobileGatewayOp) ConnectToSwitch(ctx context.Context, zone string, id types.ID, switchID types.ID) error {
  8325  	// build request URL
  8326  	pathBuildParameter := map[string]interface{}{
  8327  		"rootURL":    SakuraCloudAPIRoot,
  8328  		"pathSuffix": o.PathSuffix,
  8329  		"pathName":   o.PathName,
  8330  		"zone":       zone,
  8331  		"id":         id,
  8332  		"switchID":   switchID,
  8333  	}
  8334  
  8335  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/1/to/switch/{{.switchID}}", pathBuildParameter)
  8336  	if err != nil {
  8337  		return err
  8338  	}
  8339  	// build request body
  8340  	var body interface{}
  8341  
  8342  	// do request
  8343  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8344  	if err != nil {
  8345  		return err
  8346  	}
  8347  
  8348  	// build results
  8349  
  8350  	return nil
  8351  }
  8352  
  8353  // DisconnectFromSwitch is API call
  8354  func (o *MobileGatewayOp) DisconnectFromSwitch(ctx context.Context, zone string, id types.ID) error {
  8355  	// build request URL
  8356  	pathBuildParameter := map[string]interface{}{
  8357  		"rootURL":    SakuraCloudAPIRoot,
  8358  		"pathSuffix": o.PathSuffix,
  8359  		"pathName":   o.PathName,
  8360  		"zone":       zone,
  8361  		"id":         id,
  8362  	}
  8363  
  8364  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/1/to/switch", pathBuildParameter)
  8365  	if err != nil {
  8366  		return err
  8367  	}
  8368  	// build request body
  8369  	var body interface{}
  8370  
  8371  	// do request
  8372  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8373  	if err != nil {
  8374  		return err
  8375  	}
  8376  
  8377  	// build results
  8378  
  8379  	return nil
  8380  }
  8381  
  8382  // GetDNS is API call
  8383  func (o *MobileGatewayOp) GetDNS(ctx context.Context, zone string, id types.ID) (*MobileGatewayDNSSetting, error) {
  8384  	// build request URL
  8385  	pathBuildParameter := map[string]interface{}{
  8386  		"rootURL":    SakuraCloudAPIRoot,
  8387  		"pathSuffix": o.PathSuffix,
  8388  		"pathName":   o.PathName,
  8389  		"zone":       zone,
  8390  		"id":         id,
  8391  	}
  8392  
  8393  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/dnsresolver", pathBuildParameter)
  8394  	if err != nil {
  8395  		return nil, err
  8396  	}
  8397  	// build request body
  8398  	var body interface{}
  8399  
  8400  	// do request
  8401  	data, err := o.Client.Do(ctx, "GET", url, body)
  8402  	if err != nil {
  8403  		return nil, err
  8404  	}
  8405  
  8406  	// build results
  8407  	results, err := o.transformGetDNSResults(data)
  8408  	if err != nil {
  8409  		return nil, err
  8410  	}
  8411  	return results.SIMGroup, nil
  8412  }
  8413  
  8414  // SetDNS is API call
  8415  func (o *MobileGatewayOp) SetDNS(ctx context.Context, zone string, id types.ID, param *MobileGatewayDNSSetting) error {
  8416  	// build request URL
  8417  	pathBuildParameter := map[string]interface{}{
  8418  		"rootURL":    SakuraCloudAPIRoot,
  8419  		"pathSuffix": o.PathSuffix,
  8420  		"pathName":   o.PathName,
  8421  		"zone":       zone,
  8422  		"id":         id,
  8423  		"param":      param,
  8424  	}
  8425  
  8426  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/dnsresolver", pathBuildParameter)
  8427  	if err != nil {
  8428  		return err
  8429  	}
  8430  	// build request body
  8431  	var body interface{}
  8432  	v, err := o.transformSetDNSArgs(id, param)
  8433  	if err != nil {
  8434  		return err
  8435  	}
  8436  	body = v
  8437  
  8438  	// do request
  8439  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8440  	if err != nil {
  8441  		return err
  8442  	}
  8443  
  8444  	// build results
  8445  
  8446  	return nil
  8447  }
  8448  
  8449  // GetSIMRoutes is API call
  8450  func (o *MobileGatewayOp) GetSIMRoutes(ctx context.Context, zone string, id types.ID) (MobileGatewaySIMRoutes, error) {
  8451  	// build request URL
  8452  	pathBuildParameter := map[string]interface{}{
  8453  		"rootURL":    SakuraCloudAPIRoot,
  8454  		"pathSuffix": o.PathSuffix,
  8455  		"pathName":   o.PathName,
  8456  		"zone":       zone,
  8457  		"id":         id,
  8458  	}
  8459  
  8460  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/simroutes", pathBuildParameter)
  8461  	if err != nil {
  8462  		return nil, err
  8463  	}
  8464  	// build request body
  8465  	var body interface{}
  8466  
  8467  	// do request
  8468  	data, err := o.Client.Do(ctx, "GET", url, body)
  8469  	if err != nil {
  8470  		return nil, err
  8471  	}
  8472  
  8473  	// build results
  8474  	results, err := o.transformGetSIMRoutesResults(data)
  8475  	if err != nil {
  8476  		return nil, err
  8477  	}
  8478  	return results.SIMRoutes, nil
  8479  }
  8480  
  8481  // SetSIMRoutes is API call
  8482  func (o *MobileGatewayOp) SetSIMRoutes(ctx context.Context, zone string, id types.ID, param []*MobileGatewaySIMRouteParam) error {
  8483  	// build request URL
  8484  	pathBuildParameter := map[string]interface{}{
  8485  		"rootURL":    SakuraCloudAPIRoot,
  8486  		"pathSuffix": o.PathSuffix,
  8487  		"pathName":   o.PathName,
  8488  		"zone":       zone,
  8489  		"id":         id,
  8490  		"param":      param,
  8491  	}
  8492  
  8493  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/simroutes", pathBuildParameter)
  8494  	if err != nil {
  8495  		return err
  8496  	}
  8497  	// build request body
  8498  	var body interface{}
  8499  	v, err := o.transformSetSIMRoutesArgs(id, param)
  8500  	if err != nil {
  8501  		return err
  8502  	}
  8503  	body = v
  8504  
  8505  	// do request
  8506  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8507  	if err != nil {
  8508  		return err
  8509  	}
  8510  
  8511  	// build results
  8512  
  8513  	return nil
  8514  }
  8515  
  8516  // ListSIM is API call
  8517  func (o *MobileGatewayOp) ListSIM(ctx context.Context, zone string, id types.ID) (MobileGatewaySIMs, error) {
  8518  	// build request URL
  8519  	pathBuildParameter := map[string]interface{}{
  8520  		"rootURL":    SakuraCloudAPIRoot,
  8521  		"pathSuffix": o.PathSuffix,
  8522  		"pathName":   o.PathName,
  8523  		"zone":       zone,
  8524  		"id":         id,
  8525  	}
  8526  
  8527  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/sims", pathBuildParameter)
  8528  	if err != nil {
  8529  		return nil, err
  8530  	}
  8531  	// build request body
  8532  	var body interface{}
  8533  
  8534  	// do request
  8535  	data, err := o.Client.Do(ctx, "GET", url, body)
  8536  	if err != nil {
  8537  		return nil, err
  8538  	}
  8539  
  8540  	// build results
  8541  	results, err := o.transformListSIMResults(data)
  8542  	if err != nil {
  8543  		return nil, err
  8544  	}
  8545  	return results.SIM, nil
  8546  }
  8547  
  8548  // AddSIM is API call
  8549  func (o *MobileGatewayOp) AddSIM(ctx context.Context, zone string, id types.ID, param *MobileGatewayAddSIMRequest) error {
  8550  	// build request URL
  8551  	pathBuildParameter := map[string]interface{}{
  8552  		"rootURL":    SakuraCloudAPIRoot,
  8553  		"pathSuffix": o.PathSuffix,
  8554  		"pathName":   o.PathName,
  8555  		"zone":       zone,
  8556  		"id":         id,
  8557  		"param":      param,
  8558  	}
  8559  
  8560  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/sims", pathBuildParameter)
  8561  	if err != nil {
  8562  		return err
  8563  	}
  8564  	// build request body
  8565  	var body interface{}
  8566  	v, err := o.transformAddSIMArgs(id, param)
  8567  	if err != nil {
  8568  		return err
  8569  	}
  8570  	body = v
  8571  
  8572  	// do request
  8573  	_, err = o.Client.Do(ctx, "POST", url, body)
  8574  	if err != nil {
  8575  		return err
  8576  	}
  8577  
  8578  	// build results
  8579  
  8580  	return nil
  8581  }
  8582  
  8583  // DeleteSIM is API call
  8584  func (o *MobileGatewayOp) DeleteSIM(ctx context.Context, zone string, id types.ID, simID types.ID) error {
  8585  	// build request URL
  8586  	pathBuildParameter := map[string]interface{}{
  8587  		"rootURL":    SakuraCloudAPIRoot,
  8588  		"pathSuffix": o.PathSuffix,
  8589  		"pathName":   o.PathName,
  8590  		"zone":       zone,
  8591  		"id":         id,
  8592  		"simID":      simID,
  8593  	}
  8594  
  8595  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/sims/{{.simID}}", pathBuildParameter)
  8596  	if err != nil {
  8597  		return err
  8598  	}
  8599  	// build request body
  8600  	var body interface{}
  8601  
  8602  	// do request
  8603  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8604  	if err != nil {
  8605  		return err
  8606  	}
  8607  
  8608  	// build results
  8609  
  8610  	return nil
  8611  }
  8612  
  8613  // Logs is API call
  8614  func (o *MobileGatewayOp) Logs(ctx context.Context, zone string, id types.ID) ([]*MobileGatewaySIMLogs, error) {
  8615  	// build request URL
  8616  	pathBuildParameter := map[string]interface{}{
  8617  		"rootURL":    SakuraCloudAPIRoot,
  8618  		"pathSuffix": o.PathSuffix,
  8619  		"pathName":   o.PathName,
  8620  		"zone":       zone,
  8621  		"id":         id,
  8622  	}
  8623  
  8624  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/sessionlog", pathBuildParameter)
  8625  	if err != nil {
  8626  		return nil, err
  8627  	}
  8628  	// build request body
  8629  	var body interface{}
  8630  
  8631  	// do request
  8632  	data, err := o.Client.Do(ctx, "GET", url, body)
  8633  	if err != nil {
  8634  		return nil, err
  8635  	}
  8636  
  8637  	// build results
  8638  	results, err := o.transformLogsResults(data)
  8639  	if err != nil {
  8640  		return nil, err
  8641  	}
  8642  	return results.Logs, nil
  8643  }
  8644  
  8645  // GetTrafficConfig is API call
  8646  func (o *MobileGatewayOp) GetTrafficConfig(ctx context.Context, zone string, id types.ID) (*MobileGatewayTrafficControl, error) {
  8647  	// build request URL
  8648  	pathBuildParameter := map[string]interface{}{
  8649  		"rootURL":    SakuraCloudAPIRoot,
  8650  		"pathSuffix": o.PathSuffix,
  8651  		"pathName":   o.PathName,
  8652  		"zone":       zone,
  8653  		"id":         id,
  8654  	}
  8655  
  8656  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/traffic_monitoring", pathBuildParameter)
  8657  	if err != nil {
  8658  		return nil, err
  8659  	}
  8660  	// build request body
  8661  	var body interface{}
  8662  
  8663  	// do request
  8664  	data, err := o.Client.Do(ctx, "GET", url, body)
  8665  	if err != nil {
  8666  		return nil, err
  8667  	}
  8668  
  8669  	// build results
  8670  	results, err := o.transformGetTrafficConfigResults(data)
  8671  	if err != nil {
  8672  		return nil, err
  8673  	}
  8674  	return results.TrafficMonitoring, nil
  8675  }
  8676  
  8677  // SetTrafficConfig is API call
  8678  func (o *MobileGatewayOp) SetTrafficConfig(ctx context.Context, zone string, id types.ID, param *MobileGatewayTrafficControl) error {
  8679  	// build request URL
  8680  	pathBuildParameter := map[string]interface{}{
  8681  		"rootURL":    SakuraCloudAPIRoot,
  8682  		"pathSuffix": o.PathSuffix,
  8683  		"pathName":   o.PathName,
  8684  		"zone":       zone,
  8685  		"id":         id,
  8686  		"param":      param,
  8687  	}
  8688  
  8689  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/traffic_monitoring", pathBuildParameter)
  8690  	if err != nil {
  8691  		return err
  8692  	}
  8693  	// build request body
  8694  	var body interface{}
  8695  	v, err := o.transformSetTrafficConfigArgs(id, param)
  8696  	if err != nil {
  8697  		return err
  8698  	}
  8699  	body = v
  8700  
  8701  	// do request
  8702  	_, err = o.Client.Do(ctx, "PUT", url, body)
  8703  	if err != nil {
  8704  		return err
  8705  	}
  8706  
  8707  	// build results
  8708  
  8709  	return nil
  8710  }
  8711  
  8712  // DeleteTrafficConfig is API call
  8713  func (o *MobileGatewayOp) DeleteTrafficConfig(ctx context.Context, zone string, id types.ID) error {
  8714  	// build request URL
  8715  	pathBuildParameter := map[string]interface{}{
  8716  		"rootURL":    SakuraCloudAPIRoot,
  8717  		"pathSuffix": o.PathSuffix,
  8718  		"pathName":   o.PathName,
  8719  		"zone":       zone,
  8720  		"id":         id,
  8721  	}
  8722  
  8723  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/traffic_monitoring", pathBuildParameter)
  8724  	if err != nil {
  8725  		return err
  8726  	}
  8727  	// build request body
  8728  	var body interface{}
  8729  
  8730  	// do request
  8731  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8732  	if err != nil {
  8733  		return err
  8734  	}
  8735  
  8736  	// build results
  8737  
  8738  	return nil
  8739  }
  8740  
  8741  // TrafficStatus is API call
  8742  func (o *MobileGatewayOp) TrafficStatus(ctx context.Context, zone string, id types.ID) (*MobileGatewayTrafficStatus, error) {
  8743  	// build request URL
  8744  	pathBuildParameter := map[string]interface{}{
  8745  		"rootURL":    SakuraCloudAPIRoot,
  8746  		"pathSuffix": o.PathSuffix,
  8747  		"pathName":   o.PathName,
  8748  		"zone":       zone,
  8749  		"id":         id,
  8750  	}
  8751  
  8752  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/mobilegateway/traffic_status", pathBuildParameter)
  8753  	if err != nil {
  8754  		return nil, err
  8755  	}
  8756  	// build request body
  8757  	var body interface{}
  8758  
  8759  	// do request
  8760  	data, err := o.Client.Do(ctx, "GET", url, body)
  8761  	if err != nil {
  8762  		return nil, err
  8763  	}
  8764  
  8765  	// build results
  8766  	results, err := o.transformTrafficStatusResults(data)
  8767  	if err != nil {
  8768  		return nil, err
  8769  	}
  8770  	return results.TrafficStatus, nil
  8771  }
  8772  
  8773  // MonitorInterface is API call
  8774  func (o *MobileGatewayOp) MonitorInterface(ctx context.Context, zone string, id types.ID, index int, condition *MonitorCondition) (*InterfaceActivity, error) {
  8775  	// build request URL
  8776  	pathBuildParameter := map[string]interface{}{
  8777  		"rootURL":    SakuraCloudAPIRoot,
  8778  		"pathSuffix": o.PathSuffix,
  8779  		"pathName":   o.PathName,
  8780  		"zone":       zone,
  8781  		"id":         id,
  8782  		"index":      index,
  8783  		"condition":  condition,
  8784  	}
  8785  
  8786  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface{{if ne .index 0}}/{{.index}}{{end}}/monitor", pathBuildParameter)
  8787  	if err != nil {
  8788  		return nil, err
  8789  	}
  8790  	// build request body
  8791  	var body interface{}
  8792  	v, err := o.transformMonitorInterfaceArgs(id, index, condition)
  8793  	if err != nil {
  8794  		return nil, err
  8795  	}
  8796  	body = v
  8797  
  8798  	// do request
  8799  	data, err := o.Client.Do(ctx, "GET", url, body)
  8800  	if err != nil {
  8801  		return nil, err
  8802  	}
  8803  
  8804  	// build results
  8805  	results, err := o.transformMonitorInterfaceResults(data)
  8806  	if err != nil {
  8807  		return nil, err
  8808  	}
  8809  	return results.InterfaceActivity, nil
  8810  }
  8811  
  8812  /*************************************************
  8813  * NFSOp
  8814  *************************************************/
  8815  
  8816  // NFSOp implements NFSAPI interface
  8817  type NFSOp struct {
  8818  	// Client APICaller
  8819  	Client APICaller
  8820  	// PathSuffix is used when building URL
  8821  	PathSuffix string
  8822  	// PathName is used when building URL
  8823  	PathName string
  8824  }
  8825  
  8826  // NewNFSOp creates new NFSOp instance
  8827  func NewNFSOp(caller APICaller) NFSAPI {
  8828  	return GetClientFactoryFunc("NFS")(caller).(NFSAPI)
  8829  }
  8830  
  8831  // Find is API call
  8832  func (o *NFSOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*NFSFindResult, error) {
  8833  	// build request URL
  8834  	pathBuildParameter := map[string]interface{}{
  8835  		"rootURL":    SakuraCloudAPIRoot,
  8836  		"pathSuffix": o.PathSuffix,
  8837  		"pathName":   o.PathName,
  8838  		"zone":       zone,
  8839  		"conditions": conditions,
  8840  	}
  8841  
  8842  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  8843  	if err != nil {
  8844  		return nil, err
  8845  	}
  8846  	// build request body
  8847  	var body interface{}
  8848  	v, err := o.transformFindArgs(conditions)
  8849  	if err != nil {
  8850  		return nil, err
  8851  	}
  8852  	body = v
  8853  
  8854  	// do request
  8855  	data, err := o.Client.Do(ctx, "GET", url, body)
  8856  	if err != nil {
  8857  		return nil, err
  8858  	}
  8859  
  8860  	// build results
  8861  	results, err := o.transformFindResults(data)
  8862  	if err != nil {
  8863  		return nil, err
  8864  	}
  8865  	return results, err
  8866  }
  8867  
  8868  // Create is API call
  8869  func (o *NFSOp) Create(ctx context.Context, zone string, param *NFSCreateRequest) (*NFS, error) {
  8870  	// build request URL
  8871  	pathBuildParameter := map[string]interface{}{
  8872  		"rootURL":    SakuraCloudAPIRoot,
  8873  		"pathSuffix": o.PathSuffix,
  8874  		"pathName":   o.PathName,
  8875  		"zone":       zone,
  8876  		"param":      param,
  8877  	}
  8878  
  8879  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  8880  	if err != nil {
  8881  		return nil, err
  8882  	}
  8883  	// build request body
  8884  	var body interface{}
  8885  	v, err := o.transformCreateArgs(param)
  8886  	if err != nil {
  8887  		return nil, err
  8888  	}
  8889  	body = v
  8890  
  8891  	// do request
  8892  	data, err := o.Client.Do(ctx, "POST", url, body)
  8893  	if err != nil {
  8894  		return nil, err
  8895  	}
  8896  
  8897  	// build results
  8898  	results, err := o.transformCreateResults(data)
  8899  	if err != nil {
  8900  		return nil, err
  8901  	}
  8902  	return results.NFS, nil
  8903  }
  8904  
  8905  // Read is API call
  8906  func (o *NFSOp) Read(ctx context.Context, zone string, id types.ID) (*NFS, error) {
  8907  	// build request URL
  8908  	pathBuildParameter := map[string]interface{}{
  8909  		"rootURL":    SakuraCloudAPIRoot,
  8910  		"pathSuffix": o.PathSuffix,
  8911  		"pathName":   o.PathName,
  8912  		"zone":       zone,
  8913  		"id":         id,
  8914  	}
  8915  
  8916  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8917  	if err != nil {
  8918  		return nil, err
  8919  	}
  8920  	// build request body
  8921  	var body interface{}
  8922  
  8923  	// do request
  8924  	data, err := o.Client.Do(ctx, "GET", url, body)
  8925  	if err != nil {
  8926  		return nil, err
  8927  	}
  8928  
  8929  	// build results
  8930  	results, err := o.transformReadResults(data)
  8931  	if err != nil {
  8932  		return nil, err
  8933  	}
  8934  	return results.NFS, nil
  8935  }
  8936  
  8937  // Update is API call
  8938  func (o *NFSOp) Update(ctx context.Context, zone string, id types.ID, param *NFSUpdateRequest) (*NFS, error) {
  8939  	// build request URL
  8940  	pathBuildParameter := map[string]interface{}{
  8941  		"rootURL":    SakuraCloudAPIRoot,
  8942  		"pathSuffix": o.PathSuffix,
  8943  		"pathName":   o.PathName,
  8944  		"zone":       zone,
  8945  		"id":         id,
  8946  		"param":      param,
  8947  	}
  8948  
  8949  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8950  	if err != nil {
  8951  		return nil, err
  8952  	}
  8953  	// build request body
  8954  	var body interface{}
  8955  	v, err := o.transformUpdateArgs(id, param)
  8956  	if err != nil {
  8957  		return nil, err
  8958  	}
  8959  	body = v
  8960  
  8961  	// do request
  8962  	data, err := o.Client.Do(ctx, "PUT", url, body)
  8963  	if err != nil {
  8964  		return nil, err
  8965  	}
  8966  
  8967  	// build results
  8968  	results, err := o.transformUpdateResults(data)
  8969  	if err != nil {
  8970  		return nil, err
  8971  	}
  8972  	return results.NFS, nil
  8973  }
  8974  
  8975  // Delete is API call
  8976  func (o *NFSOp) Delete(ctx context.Context, zone string, id types.ID) error {
  8977  	// build request URL
  8978  	pathBuildParameter := map[string]interface{}{
  8979  		"rootURL":    SakuraCloudAPIRoot,
  8980  		"pathSuffix": o.PathSuffix,
  8981  		"pathName":   o.PathName,
  8982  		"zone":       zone,
  8983  		"id":         id,
  8984  	}
  8985  
  8986  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  8987  	if err != nil {
  8988  		return err
  8989  	}
  8990  	// build request body
  8991  	var body interface{}
  8992  
  8993  	// do request
  8994  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  8995  	if err != nil {
  8996  		return err
  8997  	}
  8998  
  8999  	// build results
  9000  
  9001  	return nil
  9002  }
  9003  
  9004  // Boot is API call
  9005  func (o *NFSOp) Boot(ctx context.Context, zone string, id types.ID) error {
  9006  	// build request URL
  9007  	pathBuildParameter := map[string]interface{}{
  9008  		"rootURL":    SakuraCloudAPIRoot,
  9009  		"pathSuffix": o.PathSuffix,
  9010  		"pathName":   o.PathName,
  9011  		"zone":       zone,
  9012  		"id":         id,
  9013  	}
  9014  
  9015  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  9016  	if err != nil {
  9017  		return err
  9018  	}
  9019  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  9020  	if err != nil {
  9021  		return err
  9022  	}
  9023  	apiLocker.Lock(lockKey)
  9024  	defer apiLocker.Unlock(lockKey)
  9025  	// build request body
  9026  	var body interface{}
  9027  
  9028  	// do request
  9029  	_, err = o.Client.Do(ctx, "PUT", url, body)
  9030  	if err != nil {
  9031  		return err
  9032  	}
  9033  
  9034  	// build results
  9035  
  9036  	return nil
  9037  }
  9038  
  9039  // Shutdown is API call
  9040  func (o *NFSOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
  9041  	// build request URL
  9042  	pathBuildParameter := map[string]interface{}{
  9043  		"rootURL":        SakuraCloudAPIRoot,
  9044  		"pathSuffix":     o.PathSuffix,
  9045  		"pathName":       o.PathName,
  9046  		"zone":           zone,
  9047  		"id":             id,
  9048  		"shutdownOption": shutdownOption,
  9049  	}
  9050  
  9051  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
  9052  	if err != nil {
  9053  		return err
  9054  	}
  9055  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  9056  	if err != nil {
  9057  		return err
  9058  	}
  9059  	apiLocker.Lock(lockKey)
  9060  	defer apiLocker.Unlock(lockKey)
  9061  	// build request body
  9062  	var body interface{}
  9063  	v, err := o.transformShutdownArgs(id, shutdownOption)
  9064  	if err != nil {
  9065  		return err
  9066  	}
  9067  	body = v
  9068  
  9069  	// do request
  9070  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  9071  	if err != nil {
  9072  		return err
  9073  	}
  9074  
  9075  	// build results
  9076  
  9077  	return nil
  9078  }
  9079  
  9080  // Reset is API call
  9081  func (o *NFSOp) Reset(ctx context.Context, zone string, id types.ID) error {
  9082  	// build request URL
  9083  	pathBuildParameter := map[string]interface{}{
  9084  		"rootURL":    SakuraCloudAPIRoot,
  9085  		"pathSuffix": o.PathSuffix,
  9086  		"pathName":   o.PathName,
  9087  		"zone":       zone,
  9088  		"id":         id,
  9089  	}
  9090  
  9091  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
  9092  	if err != nil {
  9093  		return err
  9094  	}
  9095  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
  9096  	if err != nil {
  9097  		return err
  9098  	}
  9099  	apiLocker.Lock(lockKey)
  9100  	defer apiLocker.Unlock(lockKey)
  9101  	// build request body
  9102  	var body interface{}
  9103  
  9104  	// do request
  9105  	_, err = o.Client.Do(ctx, "PUT", url, body)
  9106  	if err != nil {
  9107  		return err
  9108  	}
  9109  
  9110  	// build results
  9111  
  9112  	return nil
  9113  }
  9114  
  9115  // MonitorCPU is API call
  9116  func (o *NFSOp) MonitorCPU(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
  9117  	// build request URL
  9118  	pathBuildParameter := map[string]interface{}{
  9119  		"rootURL":    SakuraCloudAPIRoot,
  9120  		"pathSuffix": o.PathSuffix,
  9121  		"pathName":   o.PathName,
  9122  		"zone":       zone,
  9123  		"id":         id,
  9124  		"condition":  condition,
  9125  	}
  9126  
  9127  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cpu/monitor", pathBuildParameter)
  9128  	if err != nil {
  9129  		return nil, err
  9130  	}
  9131  	// build request body
  9132  	var body interface{}
  9133  	v, err := o.transformMonitorCPUArgs(id, condition)
  9134  	if err != nil {
  9135  		return nil, err
  9136  	}
  9137  	body = v
  9138  
  9139  	// do request
  9140  	data, err := o.Client.Do(ctx, "GET", url, body)
  9141  	if err != nil {
  9142  		return nil, err
  9143  	}
  9144  
  9145  	// build results
  9146  	results, err := o.transformMonitorCPUResults(data)
  9147  	if err != nil {
  9148  		return nil, err
  9149  	}
  9150  	return results.CPUTimeActivity, nil
  9151  }
  9152  
  9153  // MonitorFreeDiskSize is API call
  9154  func (o *NFSOp) MonitorFreeDiskSize(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*FreeDiskSizeActivity, error) {
  9155  	// build request URL
  9156  	pathBuildParameter := map[string]interface{}{
  9157  		"rootURL":    SakuraCloudAPIRoot,
  9158  		"pathSuffix": o.PathSuffix,
  9159  		"pathName":   o.PathName,
  9160  		"zone":       zone,
  9161  		"id":         id,
  9162  		"condition":  condition,
  9163  	}
  9164  
  9165  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/database/monitor", pathBuildParameter)
  9166  	if err != nil {
  9167  		return nil, err
  9168  	}
  9169  	// build request body
  9170  	var body interface{}
  9171  	v, err := o.transformMonitorFreeDiskSizeArgs(id, condition)
  9172  	if err != nil {
  9173  		return nil, err
  9174  	}
  9175  	body = v
  9176  
  9177  	// do request
  9178  	data, err := o.Client.Do(ctx, "GET", url, body)
  9179  	if err != nil {
  9180  		return nil, err
  9181  	}
  9182  
  9183  	// build results
  9184  	results, err := o.transformMonitorFreeDiskSizeResults(data)
  9185  	if err != nil {
  9186  		return nil, err
  9187  	}
  9188  	return results.FreeDiskSizeActivity, nil
  9189  }
  9190  
  9191  // MonitorInterface is API call
  9192  func (o *NFSOp) MonitorInterface(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*InterfaceActivity, error) {
  9193  	// build request URL
  9194  	pathBuildParameter := map[string]interface{}{
  9195  		"rootURL":    SakuraCloudAPIRoot,
  9196  		"pathSuffix": o.PathSuffix,
  9197  		"pathName":   o.PathName,
  9198  		"zone":       zone,
  9199  		"id":         id,
  9200  		"condition":  condition,
  9201  	}
  9202  
  9203  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/monitor", pathBuildParameter)
  9204  	if err != nil {
  9205  		return nil, err
  9206  	}
  9207  	// build request body
  9208  	var body interface{}
  9209  	v, err := o.transformMonitorInterfaceArgs(id, condition)
  9210  	if err != nil {
  9211  		return nil, err
  9212  	}
  9213  	body = v
  9214  
  9215  	// do request
  9216  	data, err := o.Client.Do(ctx, "GET", url, body)
  9217  	if err != nil {
  9218  		return nil, err
  9219  	}
  9220  
  9221  	// build results
  9222  	results, err := o.transformMonitorInterfaceResults(data)
  9223  	if err != nil {
  9224  		return nil, err
  9225  	}
  9226  	return results.InterfaceActivity, nil
  9227  }
  9228  
  9229  /*************************************************
  9230  * NoteOp
  9231  *************************************************/
  9232  
  9233  // NoteOp implements NoteAPI interface
  9234  type NoteOp struct {
  9235  	// Client APICaller
  9236  	Client APICaller
  9237  	// PathSuffix is used when building URL
  9238  	PathSuffix string
  9239  	// PathName is used when building URL
  9240  	PathName string
  9241  }
  9242  
  9243  // NewNoteOp creates new NoteOp instance
  9244  func NewNoteOp(caller APICaller) NoteAPI {
  9245  	return GetClientFactoryFunc("Note")(caller).(NoteAPI)
  9246  }
  9247  
  9248  // Find is API call
  9249  func (o *NoteOp) Find(ctx context.Context, conditions *FindCondition) (*NoteFindResult, error) {
  9250  	// build request URL
  9251  	pathBuildParameter := map[string]interface{}{
  9252  		"rootURL":    SakuraCloudAPIRoot,
  9253  		"pathSuffix": o.PathSuffix,
  9254  		"pathName":   o.PathName,
  9255  		"zone":       APIDefaultZone,
  9256  		"conditions": conditions,
  9257  	}
  9258  
  9259  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9260  	if err != nil {
  9261  		return nil, err
  9262  	}
  9263  	// build request body
  9264  	var body interface{}
  9265  	v, err := o.transformFindArgs(conditions)
  9266  	if err != nil {
  9267  		return nil, err
  9268  	}
  9269  	body = v
  9270  
  9271  	// do request
  9272  	data, err := o.Client.Do(ctx, "GET", url, body)
  9273  	if err != nil {
  9274  		return nil, err
  9275  	}
  9276  
  9277  	// build results
  9278  	results, err := o.transformFindResults(data)
  9279  	if err != nil {
  9280  		return nil, err
  9281  	}
  9282  	return results, err
  9283  }
  9284  
  9285  // Create is API call
  9286  func (o *NoteOp) Create(ctx context.Context, param *NoteCreateRequest) (*Note, error) {
  9287  	// build request URL
  9288  	pathBuildParameter := map[string]interface{}{
  9289  		"rootURL":    SakuraCloudAPIRoot,
  9290  		"pathSuffix": o.PathSuffix,
  9291  		"pathName":   o.PathName,
  9292  		"zone":       APIDefaultZone,
  9293  		"param":      param,
  9294  	}
  9295  
  9296  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9297  	if err != nil {
  9298  		return nil, err
  9299  	}
  9300  	// build request body
  9301  	var body interface{}
  9302  	v, err := o.transformCreateArgs(param)
  9303  	if err != nil {
  9304  		return nil, err
  9305  	}
  9306  	body = v
  9307  
  9308  	// do request
  9309  	data, err := o.Client.Do(ctx, "POST", url, body)
  9310  	if err != nil {
  9311  		return nil, err
  9312  	}
  9313  
  9314  	// build results
  9315  	results, err := o.transformCreateResults(data)
  9316  	if err != nil {
  9317  		return nil, err
  9318  	}
  9319  	return results.Note, nil
  9320  }
  9321  
  9322  // Read is API call
  9323  func (o *NoteOp) Read(ctx context.Context, id types.ID) (*Note, error) {
  9324  	// build request URL
  9325  	pathBuildParameter := map[string]interface{}{
  9326  		"rootURL":    SakuraCloudAPIRoot,
  9327  		"pathSuffix": o.PathSuffix,
  9328  		"pathName":   o.PathName,
  9329  		"zone":       APIDefaultZone,
  9330  		"id":         id,
  9331  	}
  9332  
  9333  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9334  	if err != nil {
  9335  		return nil, err
  9336  	}
  9337  	// build request body
  9338  	var body interface{}
  9339  
  9340  	// do request
  9341  	data, err := o.Client.Do(ctx, "GET", url, body)
  9342  	if err != nil {
  9343  		return nil, err
  9344  	}
  9345  
  9346  	// build results
  9347  	results, err := o.transformReadResults(data)
  9348  	if err != nil {
  9349  		return nil, err
  9350  	}
  9351  	return results.Note, nil
  9352  }
  9353  
  9354  // Update is API call
  9355  func (o *NoteOp) Update(ctx context.Context, id types.ID, param *NoteUpdateRequest) (*Note, error) {
  9356  	// build request URL
  9357  	pathBuildParameter := map[string]interface{}{
  9358  		"rootURL":    SakuraCloudAPIRoot,
  9359  		"pathSuffix": o.PathSuffix,
  9360  		"pathName":   o.PathName,
  9361  		"zone":       APIDefaultZone,
  9362  		"id":         id,
  9363  		"param":      param,
  9364  	}
  9365  
  9366  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9367  	if err != nil {
  9368  		return nil, err
  9369  	}
  9370  	// build request body
  9371  	var body interface{}
  9372  	v, err := o.transformUpdateArgs(id, param)
  9373  	if err != nil {
  9374  		return nil, err
  9375  	}
  9376  	body = v
  9377  
  9378  	// do request
  9379  	data, err := o.Client.Do(ctx, "PUT", url, body)
  9380  	if err != nil {
  9381  		return nil, err
  9382  	}
  9383  
  9384  	// build results
  9385  	results, err := o.transformUpdateResults(data)
  9386  	if err != nil {
  9387  		return nil, err
  9388  	}
  9389  	return results.Note, nil
  9390  }
  9391  
  9392  // Delete is API call
  9393  func (o *NoteOp) Delete(ctx context.Context, id types.ID) error {
  9394  	// build request URL
  9395  	pathBuildParameter := map[string]interface{}{
  9396  		"rootURL":    SakuraCloudAPIRoot,
  9397  		"pathSuffix": o.PathSuffix,
  9398  		"pathName":   o.PathName,
  9399  		"zone":       APIDefaultZone,
  9400  		"id":         id,
  9401  	}
  9402  
  9403  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9404  	if err != nil {
  9405  		return err
  9406  	}
  9407  	// build request body
  9408  	var body interface{}
  9409  
  9410  	// do request
  9411  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  9412  	if err != nil {
  9413  		return err
  9414  	}
  9415  
  9416  	// build results
  9417  
  9418  	return nil
  9419  }
  9420  
  9421  /*************************************************
  9422  * PacketFilterOp
  9423  *************************************************/
  9424  
  9425  // PacketFilterOp implements PacketFilterAPI interface
  9426  type PacketFilterOp struct {
  9427  	// Client APICaller
  9428  	Client APICaller
  9429  	// PathSuffix is used when building URL
  9430  	PathSuffix string
  9431  	// PathName is used when building URL
  9432  	PathName string
  9433  }
  9434  
  9435  // NewPacketFilterOp creates new PacketFilterOp instance
  9436  func NewPacketFilterOp(caller APICaller) PacketFilterAPI {
  9437  	return GetClientFactoryFunc("PacketFilter")(caller).(PacketFilterAPI)
  9438  }
  9439  
  9440  // Find is API call
  9441  func (o *PacketFilterOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*PacketFilterFindResult, error) {
  9442  	// build request URL
  9443  	pathBuildParameter := map[string]interface{}{
  9444  		"rootURL":    SakuraCloudAPIRoot,
  9445  		"pathSuffix": o.PathSuffix,
  9446  		"pathName":   o.PathName,
  9447  		"zone":       zone,
  9448  		"conditions": conditions,
  9449  	}
  9450  
  9451  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9452  	if err != nil {
  9453  		return nil, err
  9454  	}
  9455  	// build request body
  9456  	var body interface{}
  9457  	v, err := o.transformFindArgs(conditions)
  9458  	if err != nil {
  9459  		return nil, err
  9460  	}
  9461  	body = v
  9462  
  9463  	// do request
  9464  	data, err := o.Client.Do(ctx, "GET", url, body)
  9465  	if err != nil {
  9466  		return nil, err
  9467  	}
  9468  
  9469  	// build results
  9470  	results, err := o.transformFindResults(data)
  9471  	if err != nil {
  9472  		return nil, err
  9473  	}
  9474  	return results, err
  9475  }
  9476  
  9477  // Create is API call
  9478  func (o *PacketFilterOp) Create(ctx context.Context, zone string, param *PacketFilterCreateRequest) (*PacketFilter, error) {
  9479  	// build request URL
  9480  	pathBuildParameter := map[string]interface{}{
  9481  		"rootURL":    SakuraCloudAPIRoot,
  9482  		"pathSuffix": o.PathSuffix,
  9483  		"pathName":   o.PathName,
  9484  		"zone":       zone,
  9485  		"param":      param,
  9486  	}
  9487  
  9488  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9489  	if err != nil {
  9490  		return nil, err
  9491  	}
  9492  	// build request body
  9493  	var body interface{}
  9494  	v, err := o.transformCreateArgs(param)
  9495  	if err != nil {
  9496  		return nil, err
  9497  	}
  9498  	body = v
  9499  
  9500  	// do request
  9501  	data, err := o.Client.Do(ctx, "POST", url, body)
  9502  	if err != nil {
  9503  		return nil, err
  9504  	}
  9505  
  9506  	// build results
  9507  	results, err := o.transformCreateResults(data)
  9508  	if err != nil {
  9509  		return nil, err
  9510  	}
  9511  	return results.PacketFilter, nil
  9512  }
  9513  
  9514  // Read is API call
  9515  func (o *PacketFilterOp) Read(ctx context.Context, zone string, id types.ID) (*PacketFilter, error) {
  9516  	// build request URL
  9517  	pathBuildParameter := map[string]interface{}{
  9518  		"rootURL":    SakuraCloudAPIRoot,
  9519  		"pathSuffix": o.PathSuffix,
  9520  		"pathName":   o.PathName,
  9521  		"zone":       zone,
  9522  		"id":         id,
  9523  	}
  9524  
  9525  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9526  	if err != nil {
  9527  		return nil, err
  9528  	}
  9529  	// build request body
  9530  	var body interface{}
  9531  
  9532  	// do request
  9533  	data, err := o.Client.Do(ctx, "GET", url, body)
  9534  	if err != nil {
  9535  		return nil, err
  9536  	}
  9537  
  9538  	// build results
  9539  	results, err := o.transformReadResults(data)
  9540  	if err != nil {
  9541  		return nil, err
  9542  	}
  9543  	return results.PacketFilter, nil
  9544  }
  9545  
  9546  // Update is API call
  9547  func (o *PacketFilterOp) Update(ctx context.Context, zone string, id types.ID, updateParam *PacketFilterUpdateRequest, originalExpressionHash string) (*PacketFilter, error) {
  9548  	// build request URL
  9549  	pathBuildParameter := map[string]interface{}{
  9550  		"rootURL":                SakuraCloudAPIRoot,
  9551  		"pathSuffix":             o.PathSuffix,
  9552  		"pathName":               o.PathName,
  9553  		"zone":                   zone,
  9554  		"id":                     id,
  9555  		"updateParam":            updateParam,
  9556  		"originalExpressionHash": originalExpressionHash,
  9557  	}
  9558  
  9559  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9560  	if err != nil {
  9561  		return nil, err
  9562  	}
  9563  	// build request body
  9564  	var body interface{}
  9565  	v, err := o.transformUpdateArgs(id, updateParam, originalExpressionHash)
  9566  	if err != nil {
  9567  		return nil, err
  9568  	}
  9569  	body = v
  9570  
  9571  	// do request
  9572  	data, err := o.Client.Do(ctx, "PUT", url, body)
  9573  	if err != nil {
  9574  		return nil, err
  9575  	}
  9576  
  9577  	// build results
  9578  	results, err := o.transformUpdateResults(data)
  9579  	if err != nil {
  9580  		return nil, err
  9581  	}
  9582  	return results.PacketFilter, nil
  9583  }
  9584  
  9585  // Delete is API call
  9586  func (o *PacketFilterOp) Delete(ctx context.Context, zone string, id types.ID) error {
  9587  	// build request URL
  9588  	pathBuildParameter := map[string]interface{}{
  9589  		"rootURL":    SakuraCloudAPIRoot,
  9590  		"pathSuffix": o.PathSuffix,
  9591  		"pathName":   o.PathName,
  9592  		"zone":       zone,
  9593  		"id":         id,
  9594  	}
  9595  
  9596  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9597  	if err != nil {
  9598  		return err
  9599  	}
  9600  	// build request body
  9601  	var body interface{}
  9602  
  9603  	// do request
  9604  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  9605  	if err != nil {
  9606  		return err
  9607  	}
  9608  
  9609  	// build results
  9610  
  9611  	return nil
  9612  }
  9613  
  9614  /*************************************************
  9615  * PrivateHostOp
  9616  *************************************************/
  9617  
  9618  // PrivateHostOp implements PrivateHostAPI interface
  9619  type PrivateHostOp struct {
  9620  	// Client APICaller
  9621  	Client APICaller
  9622  	// PathSuffix is used when building URL
  9623  	PathSuffix string
  9624  	// PathName is used when building URL
  9625  	PathName string
  9626  }
  9627  
  9628  // NewPrivateHostOp creates new PrivateHostOp instance
  9629  func NewPrivateHostOp(caller APICaller) PrivateHostAPI {
  9630  	return GetClientFactoryFunc("PrivateHost")(caller).(PrivateHostAPI)
  9631  }
  9632  
  9633  // Find is API call
  9634  func (o *PrivateHostOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*PrivateHostFindResult, error) {
  9635  	// build request URL
  9636  	pathBuildParameter := map[string]interface{}{
  9637  		"rootURL":    SakuraCloudAPIRoot,
  9638  		"pathSuffix": o.PathSuffix,
  9639  		"pathName":   o.PathName,
  9640  		"zone":       zone,
  9641  		"conditions": conditions,
  9642  	}
  9643  
  9644  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9645  	if err != nil {
  9646  		return nil, err
  9647  	}
  9648  	// build request body
  9649  	var body interface{}
  9650  	v, err := o.transformFindArgs(conditions)
  9651  	if err != nil {
  9652  		return nil, err
  9653  	}
  9654  	body = v
  9655  
  9656  	// do request
  9657  	data, err := o.Client.Do(ctx, "GET", url, body)
  9658  	if err != nil {
  9659  		return nil, err
  9660  	}
  9661  
  9662  	// build results
  9663  	results, err := o.transformFindResults(data)
  9664  	if err != nil {
  9665  		return nil, err
  9666  	}
  9667  	return results, err
  9668  }
  9669  
  9670  // Create is API call
  9671  func (o *PrivateHostOp) Create(ctx context.Context, zone string, param *PrivateHostCreateRequest) (*PrivateHost, error) {
  9672  	// build request URL
  9673  	pathBuildParameter := map[string]interface{}{
  9674  		"rootURL":    SakuraCloudAPIRoot,
  9675  		"pathSuffix": o.PathSuffix,
  9676  		"pathName":   o.PathName,
  9677  		"zone":       zone,
  9678  		"param":      param,
  9679  	}
  9680  
  9681  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9682  	if err != nil {
  9683  		return nil, err
  9684  	}
  9685  	// build request body
  9686  	var body interface{}
  9687  	v, err := o.transformCreateArgs(param)
  9688  	if err != nil {
  9689  		return nil, err
  9690  	}
  9691  	body = v
  9692  
  9693  	// do request
  9694  	data, err := o.Client.Do(ctx, "POST", url, body)
  9695  	if err != nil {
  9696  		return nil, err
  9697  	}
  9698  
  9699  	// build results
  9700  	results, err := o.transformCreateResults(data)
  9701  	if err != nil {
  9702  		return nil, err
  9703  	}
  9704  	return results.PrivateHost, nil
  9705  }
  9706  
  9707  // Read is API call
  9708  func (o *PrivateHostOp) Read(ctx context.Context, zone string, id types.ID) (*PrivateHost, error) {
  9709  	// build request URL
  9710  	pathBuildParameter := map[string]interface{}{
  9711  		"rootURL":    SakuraCloudAPIRoot,
  9712  		"pathSuffix": o.PathSuffix,
  9713  		"pathName":   o.PathName,
  9714  		"zone":       zone,
  9715  		"id":         id,
  9716  	}
  9717  
  9718  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9719  	if err != nil {
  9720  		return nil, err
  9721  	}
  9722  	// build request body
  9723  	var body interface{}
  9724  
  9725  	// do request
  9726  	data, err := o.Client.Do(ctx, "GET", url, body)
  9727  	if err != nil {
  9728  		return nil, err
  9729  	}
  9730  
  9731  	// build results
  9732  	results, err := o.transformReadResults(data)
  9733  	if err != nil {
  9734  		return nil, err
  9735  	}
  9736  	return results.PrivateHost, nil
  9737  }
  9738  
  9739  // Update is API call
  9740  func (o *PrivateHostOp) Update(ctx context.Context, zone string, id types.ID, param *PrivateHostUpdateRequest) (*PrivateHost, error) {
  9741  	// build request URL
  9742  	pathBuildParameter := map[string]interface{}{
  9743  		"rootURL":    SakuraCloudAPIRoot,
  9744  		"pathSuffix": o.PathSuffix,
  9745  		"pathName":   o.PathName,
  9746  		"zone":       zone,
  9747  		"id":         id,
  9748  		"param":      param,
  9749  	}
  9750  
  9751  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9752  	if err != nil {
  9753  		return nil, err
  9754  	}
  9755  	// build request body
  9756  	var body interface{}
  9757  	v, err := o.transformUpdateArgs(id, param)
  9758  	if err != nil {
  9759  		return nil, err
  9760  	}
  9761  	body = v
  9762  
  9763  	// do request
  9764  	data, err := o.Client.Do(ctx, "PUT", url, body)
  9765  	if err != nil {
  9766  		return nil, err
  9767  	}
  9768  
  9769  	// build results
  9770  	results, err := o.transformUpdateResults(data)
  9771  	if err != nil {
  9772  		return nil, err
  9773  	}
  9774  	return results.PrivateHost, nil
  9775  }
  9776  
  9777  // Delete is API call
  9778  func (o *PrivateHostOp) Delete(ctx context.Context, zone string, id types.ID) error {
  9779  	// build request URL
  9780  	pathBuildParameter := map[string]interface{}{
  9781  		"rootURL":    SakuraCloudAPIRoot,
  9782  		"pathSuffix": o.PathSuffix,
  9783  		"pathName":   o.PathName,
  9784  		"zone":       zone,
  9785  		"id":         id,
  9786  	}
  9787  
  9788  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9789  	if err != nil {
  9790  		return err
  9791  	}
  9792  	// build request body
  9793  	var body interface{}
  9794  
  9795  	// do request
  9796  	_, err = o.Client.Do(ctx, "DELETE", url, body)
  9797  	if err != nil {
  9798  		return err
  9799  	}
  9800  
  9801  	// build results
  9802  
  9803  	return nil
  9804  }
  9805  
  9806  /*************************************************
  9807  * PrivateHostPlanOp
  9808  *************************************************/
  9809  
  9810  // PrivateHostPlanOp implements PrivateHostPlanAPI interface
  9811  type PrivateHostPlanOp struct {
  9812  	// Client APICaller
  9813  	Client APICaller
  9814  	// PathSuffix is used when building URL
  9815  	PathSuffix string
  9816  	// PathName is used when building URL
  9817  	PathName string
  9818  }
  9819  
  9820  // NewPrivateHostPlanOp creates new PrivateHostPlanOp instance
  9821  func NewPrivateHostPlanOp(caller APICaller) PrivateHostPlanAPI {
  9822  	return GetClientFactoryFunc("PrivateHostPlan")(caller).(PrivateHostPlanAPI)
  9823  }
  9824  
  9825  // Find is API call
  9826  func (o *PrivateHostPlanOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*PrivateHostPlanFindResult, error) {
  9827  	// build request URL
  9828  	pathBuildParameter := map[string]interface{}{
  9829  		"rootURL":    SakuraCloudAPIRoot,
  9830  		"pathSuffix": o.PathSuffix,
  9831  		"pathName":   o.PathName,
  9832  		"zone":       zone,
  9833  		"conditions": conditions,
  9834  	}
  9835  
  9836  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9837  	if err != nil {
  9838  		return nil, err
  9839  	}
  9840  	// build request body
  9841  	var body interface{}
  9842  	v, err := o.transformFindArgs(conditions)
  9843  	if err != nil {
  9844  		return nil, err
  9845  	}
  9846  	body = v
  9847  
  9848  	// do request
  9849  	data, err := o.Client.Do(ctx, "GET", url, body)
  9850  	if err != nil {
  9851  		return nil, err
  9852  	}
  9853  
  9854  	// build results
  9855  	results, err := o.transformFindResults(data)
  9856  	if err != nil {
  9857  		return nil, err
  9858  	}
  9859  	return results, err
  9860  }
  9861  
  9862  // Read is API call
  9863  func (o *PrivateHostPlanOp) Read(ctx context.Context, zone string, id types.ID) (*PrivateHostPlan, error) {
  9864  	// build request URL
  9865  	pathBuildParameter := map[string]interface{}{
  9866  		"rootURL":    SakuraCloudAPIRoot,
  9867  		"pathSuffix": o.PathSuffix,
  9868  		"pathName":   o.PathName,
  9869  		"zone":       zone,
  9870  		"id":         id,
  9871  	}
  9872  
  9873  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9874  	if err != nil {
  9875  		return nil, err
  9876  	}
  9877  	// build request body
  9878  	var body interface{}
  9879  
  9880  	// do request
  9881  	data, err := o.Client.Do(ctx, "GET", url, body)
  9882  	if err != nil {
  9883  		return nil, err
  9884  	}
  9885  
  9886  	// build results
  9887  	results, err := o.transformReadResults(data)
  9888  	if err != nil {
  9889  		return nil, err
  9890  	}
  9891  	return results.PrivateHostPlan, nil
  9892  }
  9893  
  9894  /*************************************************
  9895  * ProxyLBOp
  9896  *************************************************/
  9897  
  9898  // ProxyLBOp implements ProxyLBAPI interface
  9899  type ProxyLBOp struct {
  9900  	// Client APICaller
  9901  	Client APICaller
  9902  	// PathSuffix is used when building URL
  9903  	PathSuffix string
  9904  	// PathName is used when building URL
  9905  	PathName string
  9906  }
  9907  
  9908  // NewProxyLBOp creates new ProxyLBOp instance
  9909  func NewProxyLBOp(caller APICaller) ProxyLBAPI {
  9910  	return GetClientFactoryFunc("ProxyLB")(caller).(ProxyLBAPI)
  9911  }
  9912  
  9913  // Find is API call
  9914  func (o *ProxyLBOp) Find(ctx context.Context, conditions *FindCondition) (*ProxyLBFindResult, error) {
  9915  	// build request URL
  9916  	pathBuildParameter := map[string]interface{}{
  9917  		"rootURL":    SakuraCloudAPIRoot,
  9918  		"pathSuffix": o.PathSuffix,
  9919  		"pathName":   o.PathName,
  9920  		"zone":       APIDefaultZone,
  9921  		"conditions": conditions,
  9922  	}
  9923  
  9924  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9925  	if err != nil {
  9926  		return nil, err
  9927  	}
  9928  	// build request body
  9929  	var body interface{}
  9930  	v, err := o.transformFindArgs(conditions)
  9931  	if err != nil {
  9932  		return nil, err
  9933  	}
  9934  	body = v
  9935  
  9936  	// do request
  9937  	data, err := o.Client.Do(ctx, "GET", url, body)
  9938  	if err != nil {
  9939  		return nil, err
  9940  	}
  9941  
  9942  	// build results
  9943  	results, err := o.transformFindResults(data)
  9944  	if err != nil {
  9945  		return nil, err
  9946  	}
  9947  	return results, err
  9948  }
  9949  
  9950  // Create is API call
  9951  func (o *ProxyLBOp) Create(ctx context.Context, param *ProxyLBCreateRequest) (*ProxyLB, error) {
  9952  	// build request URL
  9953  	pathBuildParameter := map[string]interface{}{
  9954  		"rootURL":    SakuraCloudAPIRoot,
  9955  		"pathSuffix": o.PathSuffix,
  9956  		"pathName":   o.PathName,
  9957  		"zone":       APIDefaultZone,
  9958  		"param":      param,
  9959  	}
  9960  
  9961  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
  9962  	if err != nil {
  9963  		return nil, err
  9964  	}
  9965  	// build request body
  9966  	var body interface{}
  9967  	v, err := o.transformCreateArgs(param)
  9968  	if err != nil {
  9969  		return nil, err
  9970  	}
  9971  	body = v
  9972  
  9973  	// do request
  9974  	data, err := o.Client.Do(ctx, "POST", url, body)
  9975  	if err != nil {
  9976  		return nil, err
  9977  	}
  9978  
  9979  	// build results
  9980  	results, err := o.transformCreateResults(data)
  9981  	if err != nil {
  9982  		return nil, err
  9983  	}
  9984  	return results.ProxyLB, nil
  9985  }
  9986  
  9987  // Read is API call
  9988  func (o *ProxyLBOp) Read(ctx context.Context, id types.ID) (*ProxyLB, error) {
  9989  	// build request URL
  9990  	pathBuildParameter := map[string]interface{}{
  9991  		"rootURL":    SakuraCloudAPIRoot,
  9992  		"pathSuffix": o.PathSuffix,
  9993  		"pathName":   o.PathName,
  9994  		"zone":       APIDefaultZone,
  9995  		"id":         id,
  9996  	}
  9997  
  9998  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
  9999  	if err != nil {
 10000  		return nil, err
 10001  	}
 10002  	// build request body
 10003  	var body interface{}
 10004  
 10005  	// do request
 10006  	data, err := o.Client.Do(ctx, "GET", url, body)
 10007  	if err != nil {
 10008  		return nil, err
 10009  	}
 10010  
 10011  	// build results
 10012  	results, err := o.transformReadResults(data)
 10013  	if err != nil {
 10014  		return nil, err
 10015  	}
 10016  	return results.ProxyLB, nil
 10017  }
 10018  
 10019  // Update is API call
 10020  func (o *ProxyLBOp) Update(ctx context.Context, id types.ID, param *ProxyLBUpdateRequest) (*ProxyLB, error) {
 10021  	// build request URL
 10022  	pathBuildParameter := map[string]interface{}{
 10023  		"rootURL":    SakuraCloudAPIRoot,
 10024  		"pathSuffix": o.PathSuffix,
 10025  		"pathName":   o.PathName,
 10026  		"zone":       APIDefaultZone,
 10027  		"id":         id,
 10028  		"param":      param,
 10029  	}
 10030  
 10031  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10032  	if err != nil {
 10033  		return nil, err
 10034  	}
 10035  	// build request body
 10036  	var body interface{}
 10037  	v, err := o.transformUpdateArgs(id, param)
 10038  	if err != nil {
 10039  		return nil, err
 10040  	}
 10041  	body = v
 10042  
 10043  	// do request
 10044  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10045  	if err != nil {
 10046  		return nil, err
 10047  	}
 10048  
 10049  	// build results
 10050  	results, err := o.transformUpdateResults(data)
 10051  	if err != nil {
 10052  		return nil, err
 10053  	}
 10054  	return results.ProxyLB, nil
 10055  }
 10056  
 10057  // UpdateSettings is API call
 10058  func (o *ProxyLBOp) UpdateSettings(ctx context.Context, id types.ID, param *ProxyLBUpdateSettingsRequest) (*ProxyLB, error) {
 10059  	// build request URL
 10060  	pathBuildParameter := map[string]interface{}{
 10061  		"rootURL":    SakuraCloudAPIRoot,
 10062  		"pathSuffix": o.PathSuffix,
 10063  		"pathName":   o.PathName,
 10064  		"zone":       APIDefaultZone,
 10065  		"id":         id,
 10066  		"param":      param,
 10067  	}
 10068  
 10069  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10070  	if err != nil {
 10071  		return nil, err
 10072  	}
 10073  	// build request body
 10074  	var body interface{}
 10075  	v, err := o.transformUpdateSettingsArgs(id, param)
 10076  	if err != nil {
 10077  		return nil, err
 10078  	}
 10079  	body = v
 10080  
 10081  	// do request
 10082  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10083  	if err != nil {
 10084  		return nil, err
 10085  	}
 10086  
 10087  	// build results
 10088  	results, err := o.transformUpdateSettingsResults(data)
 10089  	if err != nil {
 10090  		return nil, err
 10091  	}
 10092  	return results.ProxyLB, nil
 10093  }
 10094  
 10095  // Delete is API call
 10096  func (o *ProxyLBOp) Delete(ctx context.Context, id types.ID) error {
 10097  	// build request URL
 10098  	pathBuildParameter := map[string]interface{}{
 10099  		"rootURL":    SakuraCloudAPIRoot,
 10100  		"pathSuffix": o.PathSuffix,
 10101  		"pathName":   o.PathName,
 10102  		"zone":       APIDefaultZone,
 10103  		"id":         id,
 10104  	}
 10105  
 10106  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10107  	if err != nil {
 10108  		return err
 10109  	}
 10110  	// build request body
 10111  	var body interface{}
 10112  
 10113  	// do request
 10114  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10115  	if err != nil {
 10116  		return err
 10117  	}
 10118  
 10119  	// build results
 10120  
 10121  	return nil
 10122  }
 10123  
 10124  // ChangePlan is API call
 10125  func (o *ProxyLBOp) ChangePlan(ctx context.Context, id types.ID, param *ProxyLBChangePlanRequest) (*ProxyLB, error) {
 10126  	// build request URL
 10127  	pathBuildParameter := map[string]interface{}{
 10128  		"rootURL":    SakuraCloudAPIRoot,
 10129  		"pathSuffix": o.PathSuffix,
 10130  		"pathName":   o.PathName,
 10131  		"zone":       APIDefaultZone,
 10132  		"id":         id,
 10133  		"param":      param,
 10134  	}
 10135  
 10136  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/plan", pathBuildParameter)
 10137  	if err != nil {
 10138  		return nil, err
 10139  	}
 10140  	// build request body
 10141  	var body interface{}
 10142  	v, err := o.transformChangePlanArgs(id, param)
 10143  	if err != nil {
 10144  		return nil, err
 10145  	}
 10146  	body = v
 10147  
 10148  	// do request
 10149  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10150  	if err != nil {
 10151  		return nil, err
 10152  	}
 10153  
 10154  	// build results
 10155  	results, err := o.transformChangePlanResults(data)
 10156  	if err != nil {
 10157  		return nil, err
 10158  	}
 10159  	return results.ProxyLB, nil
 10160  }
 10161  
 10162  // GetCertificates is API call
 10163  func (o *ProxyLBOp) GetCertificates(ctx context.Context, id types.ID) (*ProxyLBCertificates, error) {
 10164  	// build request URL
 10165  	pathBuildParameter := map[string]interface{}{
 10166  		"rootURL":    SakuraCloudAPIRoot,
 10167  		"pathSuffix": o.PathSuffix,
 10168  		"pathName":   o.PathName,
 10169  		"zone":       APIDefaultZone,
 10170  		"id":         id,
 10171  	}
 10172  
 10173  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/proxylb/sslcertificate", pathBuildParameter)
 10174  	if err != nil {
 10175  		return nil, err
 10176  	}
 10177  	// build request body
 10178  	var body interface{}
 10179  
 10180  	// do request
 10181  	data, err := o.Client.Do(ctx, "GET", url, body)
 10182  	if err != nil {
 10183  		return nil, err
 10184  	}
 10185  
 10186  	// build results
 10187  	results, err := o.transformGetCertificatesResults(data)
 10188  	if err != nil {
 10189  		return nil, err
 10190  	}
 10191  	return results.ProxyLBCertificates, nil
 10192  }
 10193  
 10194  // SetCertificates is API call
 10195  func (o *ProxyLBOp) SetCertificates(ctx context.Context, id types.ID, param *ProxyLBSetCertificatesRequest) (*ProxyLBCertificates, error) {
 10196  	// build request URL
 10197  	pathBuildParameter := map[string]interface{}{
 10198  		"rootURL":    SakuraCloudAPIRoot,
 10199  		"pathSuffix": o.PathSuffix,
 10200  		"pathName":   o.PathName,
 10201  		"zone":       APIDefaultZone,
 10202  		"id":         id,
 10203  		"param":      param,
 10204  	}
 10205  
 10206  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/proxylb/sslcertificate", pathBuildParameter)
 10207  	if err != nil {
 10208  		return nil, err
 10209  	}
 10210  	// build request body
 10211  	var body interface{}
 10212  	v, err := o.transformSetCertificatesArgs(id, param)
 10213  	if err != nil {
 10214  		return nil, err
 10215  	}
 10216  	body = v
 10217  
 10218  	// do request
 10219  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10220  	if err != nil {
 10221  		return nil, err
 10222  	}
 10223  
 10224  	// build results
 10225  	results, err := o.transformSetCertificatesResults(data)
 10226  	if err != nil {
 10227  		return nil, err
 10228  	}
 10229  	return results.ProxyLBCertificates, nil
 10230  }
 10231  
 10232  // DeleteCertificates is API call
 10233  func (o *ProxyLBOp) DeleteCertificates(ctx context.Context, id types.ID) error {
 10234  	// build request URL
 10235  	pathBuildParameter := map[string]interface{}{
 10236  		"rootURL":    SakuraCloudAPIRoot,
 10237  		"pathSuffix": o.PathSuffix,
 10238  		"pathName":   o.PathName,
 10239  		"zone":       APIDefaultZone,
 10240  		"id":         id,
 10241  	}
 10242  
 10243  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/proxylb/sslcertificate", pathBuildParameter)
 10244  	if err != nil {
 10245  		return err
 10246  	}
 10247  	// build request body
 10248  	var body interface{}
 10249  
 10250  	// do request
 10251  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10252  	if err != nil {
 10253  		return err
 10254  	}
 10255  
 10256  	// build results
 10257  
 10258  	return nil
 10259  }
 10260  
 10261  // RenewLetsEncryptCert is API call
 10262  func (o *ProxyLBOp) RenewLetsEncryptCert(ctx context.Context, id types.ID) error {
 10263  	// build request URL
 10264  	pathBuildParameter := map[string]interface{}{
 10265  		"rootURL":    SakuraCloudAPIRoot,
 10266  		"pathSuffix": o.PathSuffix,
 10267  		"pathName":   o.PathName,
 10268  		"zone":       APIDefaultZone,
 10269  		"id":         id,
 10270  	}
 10271  
 10272  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/proxylb/letsencryptrenew", pathBuildParameter)
 10273  	if err != nil {
 10274  		return err
 10275  	}
 10276  	// build request body
 10277  	var body interface{}
 10278  
 10279  	// do request
 10280  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10281  	if err != nil {
 10282  		return err
 10283  	}
 10284  
 10285  	// build results
 10286  
 10287  	return nil
 10288  }
 10289  
 10290  // HealthStatus is API call
 10291  func (o *ProxyLBOp) HealthStatus(ctx context.Context, id types.ID) (*ProxyLBHealth, error) {
 10292  	// build request URL
 10293  	pathBuildParameter := map[string]interface{}{
 10294  		"rootURL":    SakuraCloudAPIRoot,
 10295  		"pathSuffix": o.PathSuffix,
 10296  		"pathName":   o.PathName,
 10297  		"zone":       APIDefaultZone,
 10298  		"id":         id,
 10299  	}
 10300  
 10301  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/health", pathBuildParameter)
 10302  	if err != nil {
 10303  		return nil, err
 10304  	}
 10305  	// build request body
 10306  	var body interface{}
 10307  
 10308  	// do request
 10309  	data, err := o.Client.Do(ctx, "GET", url, body)
 10310  	if err != nil {
 10311  		return nil, err
 10312  	}
 10313  
 10314  	// build results
 10315  	results, err := o.transformHealthStatusResults(data)
 10316  	if err != nil {
 10317  		return nil, err
 10318  	}
 10319  	return results.ProxyLBHealth, nil
 10320  }
 10321  
 10322  // MonitorConnection is API call
 10323  func (o *ProxyLBOp) MonitorConnection(ctx context.Context, id types.ID, condition *MonitorCondition) (*ConnectionActivity, error) {
 10324  	// build request URL
 10325  	pathBuildParameter := map[string]interface{}{
 10326  		"rootURL":    SakuraCloudAPIRoot,
 10327  		"pathSuffix": o.PathSuffix,
 10328  		"pathName":   o.PathName,
 10329  		"zone":       APIDefaultZone,
 10330  		"id":         id,
 10331  		"condition":  condition,
 10332  	}
 10333  
 10334  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/activity/proxylb/monitor", pathBuildParameter)
 10335  	if err != nil {
 10336  		return nil, err
 10337  	}
 10338  	// build request body
 10339  	var body interface{}
 10340  	v, err := o.transformMonitorConnectionArgs(id, condition)
 10341  	if err != nil {
 10342  		return nil, err
 10343  	}
 10344  	body = v
 10345  
 10346  	// do request
 10347  	data, err := o.Client.Do(ctx, "GET", url, body)
 10348  	if err != nil {
 10349  		return nil, err
 10350  	}
 10351  
 10352  	// build results
 10353  	results, err := o.transformMonitorConnectionResults(data)
 10354  	if err != nil {
 10355  		return nil, err
 10356  	}
 10357  	return results.ConnectionActivity, nil
 10358  }
 10359  
 10360  /*************************************************
 10361  * RegionOp
 10362  *************************************************/
 10363  
 10364  // RegionOp implements RegionAPI interface
 10365  type RegionOp struct {
 10366  	// Client APICaller
 10367  	Client APICaller
 10368  	// PathSuffix is used when building URL
 10369  	PathSuffix string
 10370  	// PathName is used when building URL
 10371  	PathName string
 10372  }
 10373  
 10374  // NewRegionOp creates new RegionOp instance
 10375  func NewRegionOp(caller APICaller) RegionAPI {
 10376  	return GetClientFactoryFunc("Region")(caller).(RegionAPI)
 10377  }
 10378  
 10379  // Find is API call
 10380  func (o *RegionOp) Find(ctx context.Context, conditions *FindCondition) (*RegionFindResult, error) {
 10381  	// build request URL
 10382  	pathBuildParameter := map[string]interface{}{
 10383  		"rootURL":    SakuraCloudAPIRoot,
 10384  		"pathSuffix": o.PathSuffix,
 10385  		"pathName":   o.PathName,
 10386  		"zone":       APIDefaultZone,
 10387  		"conditions": conditions,
 10388  	}
 10389  
 10390  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 10391  	if err != nil {
 10392  		return nil, err
 10393  	}
 10394  	// build request body
 10395  	var body interface{}
 10396  	v, err := o.transformFindArgs(conditions)
 10397  	if err != nil {
 10398  		return nil, err
 10399  	}
 10400  	body = v
 10401  
 10402  	// do request
 10403  	data, err := o.Client.Do(ctx, "GET", url, body)
 10404  	if err != nil {
 10405  		return nil, err
 10406  	}
 10407  
 10408  	// build results
 10409  	results, err := o.transformFindResults(data)
 10410  	if err != nil {
 10411  		return nil, err
 10412  	}
 10413  	return results, err
 10414  }
 10415  
 10416  // Read is API call
 10417  func (o *RegionOp) Read(ctx context.Context, id types.ID) (*Region, error) {
 10418  	// build request URL
 10419  	pathBuildParameter := map[string]interface{}{
 10420  		"rootURL":    SakuraCloudAPIRoot,
 10421  		"pathSuffix": o.PathSuffix,
 10422  		"pathName":   o.PathName,
 10423  		"zone":       APIDefaultZone,
 10424  		"id":         id,
 10425  	}
 10426  
 10427  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10428  	if err != nil {
 10429  		return nil, err
 10430  	}
 10431  	// build request body
 10432  	var body interface{}
 10433  
 10434  	// do request
 10435  	data, err := o.Client.Do(ctx, "GET", url, body)
 10436  	if err != nil {
 10437  		return nil, err
 10438  	}
 10439  
 10440  	// build results
 10441  	results, err := o.transformReadResults(data)
 10442  	if err != nil {
 10443  		return nil, err
 10444  	}
 10445  	return results.Region, nil
 10446  }
 10447  
 10448  /*************************************************
 10449  * ServerOp
 10450  *************************************************/
 10451  
 10452  // ServerOp implements ServerAPI interface
 10453  type ServerOp struct {
 10454  	// Client APICaller
 10455  	Client APICaller
 10456  	// PathSuffix is used when building URL
 10457  	PathSuffix string
 10458  	// PathName is used when building URL
 10459  	PathName string
 10460  }
 10461  
 10462  // NewServerOp creates new ServerOp instance
 10463  func NewServerOp(caller APICaller) ServerAPI {
 10464  	return GetClientFactoryFunc("Server")(caller).(ServerAPI)
 10465  }
 10466  
 10467  // Find is API call
 10468  func (o *ServerOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*ServerFindResult, error) {
 10469  	// build request URL
 10470  	pathBuildParameter := map[string]interface{}{
 10471  		"rootURL":    SakuraCloudAPIRoot,
 10472  		"pathSuffix": o.PathSuffix,
 10473  		"pathName":   o.PathName,
 10474  		"zone":       zone,
 10475  		"conditions": conditions,
 10476  	}
 10477  
 10478  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 10479  	if err != nil {
 10480  		return nil, err
 10481  	}
 10482  	// build request body
 10483  	var body interface{}
 10484  	v, err := o.transformFindArgs(conditions)
 10485  	if err != nil {
 10486  		return nil, err
 10487  	}
 10488  	body = v
 10489  
 10490  	// do request
 10491  	data, err := o.Client.Do(ctx, "GET", url, body)
 10492  	if err != nil {
 10493  		return nil, err
 10494  	}
 10495  
 10496  	// build results
 10497  	results, err := o.transformFindResults(data)
 10498  	if err != nil {
 10499  		return nil, err
 10500  	}
 10501  	return results, err
 10502  }
 10503  
 10504  // Create is API call
 10505  func (o *ServerOp) Create(ctx context.Context, zone string, param *ServerCreateRequest) (*Server, error) {
 10506  	// build request URL
 10507  	pathBuildParameter := map[string]interface{}{
 10508  		"rootURL":    SakuraCloudAPIRoot,
 10509  		"pathSuffix": o.PathSuffix,
 10510  		"pathName":   o.PathName,
 10511  		"zone":       zone,
 10512  		"param":      param,
 10513  	}
 10514  
 10515  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 10516  	if err != nil {
 10517  		return nil, err
 10518  	}
 10519  	// build request body
 10520  	var body interface{}
 10521  	v, err := o.transformCreateArgs(param)
 10522  	if err != nil {
 10523  		return nil, err
 10524  	}
 10525  	body = v
 10526  
 10527  	// do request
 10528  	data, err := o.Client.Do(ctx, "POST", url, body)
 10529  	if err != nil {
 10530  		return nil, err
 10531  	}
 10532  
 10533  	// build results
 10534  	results, err := o.transformCreateResults(data)
 10535  	if err != nil {
 10536  		return nil, err
 10537  	}
 10538  	return results.Server, nil
 10539  }
 10540  
 10541  // Read is API call
 10542  func (o *ServerOp) Read(ctx context.Context, zone string, id types.ID) (*Server, error) {
 10543  	// build request URL
 10544  	pathBuildParameter := map[string]interface{}{
 10545  		"rootURL":    SakuraCloudAPIRoot,
 10546  		"pathSuffix": o.PathSuffix,
 10547  		"pathName":   o.PathName,
 10548  		"zone":       zone,
 10549  		"id":         id,
 10550  	}
 10551  
 10552  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10553  	if err != nil {
 10554  		return nil, err
 10555  	}
 10556  	// build request body
 10557  	var body interface{}
 10558  
 10559  	// do request
 10560  	data, err := o.Client.Do(ctx, "GET", url, body)
 10561  	if err != nil {
 10562  		return nil, err
 10563  	}
 10564  
 10565  	// build results
 10566  	results, err := o.transformReadResults(data)
 10567  	if err != nil {
 10568  		return nil, err
 10569  	}
 10570  	return results.Server, nil
 10571  }
 10572  
 10573  // Update is API call
 10574  func (o *ServerOp) Update(ctx context.Context, zone string, id types.ID, param *ServerUpdateRequest) (*Server, error) {
 10575  	// build request URL
 10576  	pathBuildParameter := map[string]interface{}{
 10577  		"rootURL":    SakuraCloudAPIRoot,
 10578  		"pathSuffix": o.PathSuffix,
 10579  		"pathName":   o.PathName,
 10580  		"zone":       zone,
 10581  		"id":         id,
 10582  		"param":      param,
 10583  	}
 10584  
 10585  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10586  	if err != nil {
 10587  		return nil, err
 10588  	}
 10589  	// build request body
 10590  	var body interface{}
 10591  	v, err := o.transformUpdateArgs(id, param)
 10592  	if err != nil {
 10593  		return nil, err
 10594  	}
 10595  	body = v
 10596  
 10597  	// do request
 10598  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10599  	if err != nil {
 10600  		return nil, err
 10601  	}
 10602  
 10603  	// build results
 10604  	results, err := o.transformUpdateResults(data)
 10605  	if err != nil {
 10606  		return nil, err
 10607  	}
 10608  	return results.Server, nil
 10609  }
 10610  
 10611  // Delete is API call
 10612  func (o *ServerOp) Delete(ctx context.Context, zone string, id types.ID) error {
 10613  	// build request URL
 10614  	pathBuildParameter := map[string]interface{}{
 10615  		"rootURL":    SakuraCloudAPIRoot,
 10616  		"pathSuffix": o.PathSuffix,
 10617  		"pathName":   o.PathName,
 10618  		"zone":       zone,
 10619  		"id":         id,
 10620  	}
 10621  
 10622  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10623  	if err != nil {
 10624  		return err
 10625  	}
 10626  	// build request body
 10627  	var body interface{}
 10628  
 10629  	// do request
 10630  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10631  	if err != nil {
 10632  		return err
 10633  	}
 10634  
 10635  	// build results
 10636  
 10637  	return nil
 10638  }
 10639  
 10640  // DeleteWithDisks is API call
 10641  func (o *ServerOp) DeleteWithDisks(ctx context.Context, zone string, id types.ID, disks *ServerDeleteWithDisksRequest) error {
 10642  	// build request URL
 10643  	pathBuildParameter := map[string]interface{}{
 10644  		"rootURL":    SakuraCloudAPIRoot,
 10645  		"pathSuffix": o.PathSuffix,
 10646  		"pathName":   o.PathName,
 10647  		"zone":       zone,
 10648  		"id":         id,
 10649  		"disks":      disks,
 10650  	}
 10651  
 10652  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 10653  	if err != nil {
 10654  		return err
 10655  	}
 10656  	// build request body
 10657  	var body interface{}
 10658  	v, err := o.transformDeleteWithDisksArgs(id, disks)
 10659  	if err != nil {
 10660  		return err
 10661  	}
 10662  	body = v
 10663  
 10664  	// do request
 10665  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10666  	if err != nil {
 10667  		return err
 10668  	}
 10669  
 10670  	// build results
 10671  
 10672  	return nil
 10673  }
 10674  
 10675  // ChangePlan is API call
 10676  func (o *ServerOp) ChangePlan(ctx context.Context, zone string, id types.ID, plan *ServerChangePlanRequest) (*Server, error) {
 10677  	// build request URL
 10678  	pathBuildParameter := map[string]interface{}{
 10679  		"rootURL":    SakuraCloudAPIRoot,
 10680  		"pathSuffix": o.PathSuffix,
 10681  		"pathName":   o.PathName,
 10682  		"zone":       zone,
 10683  		"id":         id,
 10684  		"plan":       plan,
 10685  	}
 10686  
 10687  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/plan", pathBuildParameter)
 10688  	if err != nil {
 10689  		return nil, err
 10690  	}
 10691  	// build request body
 10692  	var body interface{}
 10693  	v, err := o.transformChangePlanArgs(id, plan)
 10694  	if err != nil {
 10695  		return nil, err
 10696  	}
 10697  	body = v
 10698  
 10699  	// do request
 10700  	data, err := o.Client.Do(ctx, "PUT", url, body)
 10701  	if err != nil {
 10702  		return nil, err
 10703  	}
 10704  
 10705  	// build results
 10706  	results, err := o.transformChangePlanResults(data)
 10707  	if err != nil {
 10708  		return nil, err
 10709  	}
 10710  	return results.Server, nil
 10711  }
 10712  
 10713  // InsertCDROM is API call
 10714  func (o *ServerOp) InsertCDROM(ctx context.Context, zone string, id types.ID, insertParam *InsertCDROMRequest) error {
 10715  	// build request URL
 10716  	pathBuildParameter := map[string]interface{}{
 10717  		"rootURL":     SakuraCloudAPIRoot,
 10718  		"pathSuffix":  o.PathSuffix,
 10719  		"pathName":    o.PathName,
 10720  		"zone":        zone,
 10721  		"id":          id,
 10722  		"insertParam": insertParam,
 10723  	}
 10724  
 10725  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cdrom", pathBuildParameter)
 10726  	if err != nil {
 10727  		return err
 10728  	}
 10729  	// build request body
 10730  	var body interface{}
 10731  	v, err := o.transformInsertCDROMArgs(id, insertParam)
 10732  	if err != nil {
 10733  		return err
 10734  	}
 10735  	body = v
 10736  
 10737  	// do request
 10738  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10739  	if err != nil {
 10740  		return err
 10741  	}
 10742  
 10743  	// build results
 10744  
 10745  	return nil
 10746  }
 10747  
 10748  // EjectCDROM is API call
 10749  func (o *ServerOp) EjectCDROM(ctx context.Context, zone string, id types.ID, ejectParam *EjectCDROMRequest) error {
 10750  	// build request URL
 10751  	pathBuildParameter := map[string]interface{}{
 10752  		"rootURL":    SakuraCloudAPIRoot,
 10753  		"pathSuffix": o.PathSuffix,
 10754  		"pathName":   o.PathName,
 10755  		"zone":       zone,
 10756  		"id":         id,
 10757  		"ejectParam": ejectParam,
 10758  	}
 10759  
 10760  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cdrom", pathBuildParameter)
 10761  	if err != nil {
 10762  		return err
 10763  	}
 10764  	// build request body
 10765  	var body interface{}
 10766  	v, err := o.transformEjectCDROMArgs(id, ejectParam)
 10767  	if err != nil {
 10768  		return err
 10769  	}
 10770  	body = v
 10771  
 10772  	// do request
 10773  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10774  	if err != nil {
 10775  		return err
 10776  	}
 10777  
 10778  	// build results
 10779  
 10780  	return nil
 10781  }
 10782  
 10783  // Boot is API call
 10784  func (o *ServerOp) Boot(ctx context.Context, zone string, id types.ID) error {
 10785  	// build request URL
 10786  	pathBuildParameter := map[string]interface{}{
 10787  		"rootURL":    SakuraCloudAPIRoot,
 10788  		"pathSuffix": o.PathSuffix,
 10789  		"pathName":   o.PathName,
 10790  		"zone":       zone,
 10791  		"id":         id,
 10792  	}
 10793  
 10794  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
 10795  	if err != nil {
 10796  		return err
 10797  	}
 10798  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 10799  	if err != nil {
 10800  		return err
 10801  	}
 10802  	apiLocker.Lock(lockKey)
 10803  	defer apiLocker.Unlock(lockKey)
 10804  	// build request body
 10805  	var body interface{}
 10806  
 10807  	// do request
 10808  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10809  	if err != nil {
 10810  		return err
 10811  	}
 10812  
 10813  	// build results
 10814  
 10815  	return nil
 10816  }
 10817  
 10818  // Shutdown is API call
 10819  func (o *ServerOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
 10820  	// build request URL
 10821  	pathBuildParameter := map[string]interface{}{
 10822  		"rootURL":        SakuraCloudAPIRoot,
 10823  		"pathSuffix":     o.PathSuffix,
 10824  		"pathName":       o.PathName,
 10825  		"zone":           zone,
 10826  		"id":             id,
 10827  		"shutdownOption": shutdownOption,
 10828  	}
 10829  
 10830  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
 10831  	if err != nil {
 10832  		return err
 10833  	}
 10834  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 10835  	if err != nil {
 10836  		return err
 10837  	}
 10838  	apiLocker.Lock(lockKey)
 10839  	defer apiLocker.Unlock(lockKey)
 10840  	// build request body
 10841  	var body interface{}
 10842  	v, err := o.transformShutdownArgs(id, shutdownOption)
 10843  	if err != nil {
 10844  		return err
 10845  	}
 10846  	body = v
 10847  
 10848  	// do request
 10849  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 10850  	if err != nil {
 10851  		return err
 10852  	}
 10853  
 10854  	// build results
 10855  
 10856  	return nil
 10857  }
 10858  
 10859  // Reset is API call
 10860  func (o *ServerOp) Reset(ctx context.Context, zone string, id types.ID) error {
 10861  	// build request URL
 10862  	pathBuildParameter := map[string]interface{}{
 10863  		"rootURL":    SakuraCloudAPIRoot,
 10864  		"pathSuffix": o.PathSuffix,
 10865  		"pathName":   o.PathName,
 10866  		"zone":       zone,
 10867  		"id":         id,
 10868  	}
 10869  
 10870  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
 10871  	if err != nil {
 10872  		return err
 10873  	}
 10874  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 10875  	if err != nil {
 10876  		return err
 10877  	}
 10878  	apiLocker.Lock(lockKey)
 10879  	defer apiLocker.Unlock(lockKey)
 10880  	// build request body
 10881  	var body interface{}
 10882  
 10883  	// do request
 10884  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10885  	if err != nil {
 10886  		return err
 10887  	}
 10888  
 10889  	// build results
 10890  
 10891  	return nil
 10892  }
 10893  
 10894  // BootWithVariables is API call
 10895  func (o *ServerOp) BootWithVariables(ctx context.Context, zone string, id types.ID, param *ServerBootVariables) error {
 10896  	// build request URL
 10897  	pathBuildParameter := map[string]interface{}{
 10898  		"rootURL":    SakuraCloudAPIRoot,
 10899  		"pathSuffix": o.PathSuffix,
 10900  		"pathName":   o.PathName,
 10901  		"zone":       zone,
 10902  		"id":         id,
 10903  		"param":      param,
 10904  	}
 10905  
 10906  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
 10907  	if err != nil {
 10908  		return err
 10909  	}
 10910  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 10911  	if err != nil {
 10912  		return err
 10913  	}
 10914  	apiLocker.Lock(lockKey)
 10915  	defer apiLocker.Unlock(lockKey)
 10916  	// build request body
 10917  	var body interface{}
 10918  	v, err := o.transformBootWithVariablesArgs(id, param)
 10919  	if err != nil {
 10920  		return err
 10921  	}
 10922  	body = v
 10923  
 10924  	// do request
 10925  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10926  	if err != nil {
 10927  		return err
 10928  	}
 10929  
 10930  	// build results
 10931  
 10932  	return nil
 10933  }
 10934  
 10935  // SendKey is API call
 10936  func (o *ServerOp) SendKey(ctx context.Context, zone string, id types.ID, keyboardParam *SendKeyRequest) error {
 10937  	// build request URL
 10938  	pathBuildParameter := map[string]interface{}{
 10939  		"rootURL":       SakuraCloudAPIRoot,
 10940  		"pathSuffix":    o.PathSuffix,
 10941  		"pathName":      o.PathName,
 10942  		"zone":          zone,
 10943  		"id":            id,
 10944  		"keyboardParam": keyboardParam,
 10945  	}
 10946  
 10947  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/keyboard", pathBuildParameter)
 10948  	if err != nil {
 10949  		return err
 10950  	}
 10951  	// build request body
 10952  	var body interface{}
 10953  	v, err := o.transformSendKeyArgs(id, keyboardParam)
 10954  	if err != nil {
 10955  		return err
 10956  	}
 10957  	body = v
 10958  
 10959  	// do request
 10960  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10961  	if err != nil {
 10962  		return err
 10963  	}
 10964  
 10965  	// build results
 10966  
 10967  	return nil
 10968  }
 10969  
 10970  // SendNMI is API call
 10971  func (o *ServerOp) SendNMI(ctx context.Context, zone string, id types.ID) error {
 10972  	// build request URL
 10973  	pathBuildParameter := map[string]interface{}{
 10974  		"rootURL":    SakuraCloudAPIRoot,
 10975  		"pathSuffix": o.PathSuffix,
 10976  		"pathName":   o.PathName,
 10977  		"zone":       zone,
 10978  		"id":         id,
 10979  	}
 10980  
 10981  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/qemu/nmi", pathBuildParameter)
 10982  	if err != nil {
 10983  		return err
 10984  	}
 10985  	// build request body
 10986  	var body interface{}
 10987  
 10988  	// do request
 10989  	_, err = o.Client.Do(ctx, "PUT", url, body)
 10990  	if err != nil {
 10991  		return err
 10992  	}
 10993  
 10994  	// build results
 10995  
 10996  	return nil
 10997  }
 10998  
 10999  // GetVNCProxy is API call
 11000  func (o *ServerOp) GetVNCProxy(ctx context.Context, zone string, id types.ID) (*VNCProxyInfo, error) {
 11001  	// build request URL
 11002  	pathBuildParameter := map[string]interface{}{
 11003  		"rootURL":    SakuraCloudAPIRoot,
 11004  		"pathSuffix": o.PathSuffix,
 11005  		"pathName":   o.PathName,
 11006  		"zone":       zone,
 11007  		"id":         id,
 11008  	}
 11009  
 11010  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/vnc/proxy", pathBuildParameter)
 11011  	if err != nil {
 11012  		return nil, err
 11013  	}
 11014  	// build request body
 11015  	var body interface{}
 11016  
 11017  	// do request
 11018  	data, err := o.Client.Do(ctx, "GET", url, body)
 11019  	if err != nil {
 11020  		return nil, err
 11021  	}
 11022  
 11023  	// build results
 11024  	results, err := o.transformGetVNCProxyResults(data)
 11025  	if err != nil {
 11026  		return nil, err
 11027  	}
 11028  	return results.VNCProxyInfo, nil
 11029  }
 11030  
 11031  // Monitor is API call
 11032  func (o *ServerOp) Monitor(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
 11033  	// build request URL
 11034  	pathBuildParameter := map[string]interface{}{
 11035  		"rootURL":    SakuraCloudAPIRoot,
 11036  		"pathSuffix": o.PathSuffix,
 11037  		"pathName":   o.PathName,
 11038  		"zone":       zone,
 11039  		"id":         id,
 11040  		"condition":  condition,
 11041  	}
 11042  
 11043  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
 11044  	if err != nil {
 11045  		return nil, err
 11046  	}
 11047  	// build request body
 11048  	var body interface{}
 11049  	v, err := o.transformMonitorArgs(id, condition)
 11050  	if err != nil {
 11051  		return nil, err
 11052  	}
 11053  	body = v
 11054  
 11055  	// do request
 11056  	data, err := o.Client.Do(ctx, "GET", url, body)
 11057  	if err != nil {
 11058  		return nil, err
 11059  	}
 11060  
 11061  	// build results
 11062  	results, err := o.transformMonitorResults(data)
 11063  	if err != nil {
 11064  		return nil, err
 11065  	}
 11066  	return results.CPUTimeActivity, nil
 11067  }
 11068  
 11069  // MonitorCPU is API call
 11070  func (o *ServerOp) MonitorCPU(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
 11071  	// build request URL
 11072  	pathBuildParameter := map[string]interface{}{
 11073  		"rootURL":    SakuraCloudAPIRoot,
 11074  		"pathSuffix": o.PathSuffix,
 11075  		"pathName":   o.PathName,
 11076  		"zone":       zone,
 11077  		"id":         id,
 11078  		"condition":  condition,
 11079  	}
 11080  
 11081  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/monitor", pathBuildParameter)
 11082  	if err != nil {
 11083  		return nil, err
 11084  	}
 11085  	// build request body
 11086  	var body interface{}
 11087  	v, err := o.transformMonitorCPUArgs(id, condition)
 11088  	if err != nil {
 11089  		return nil, err
 11090  	}
 11091  	body = v
 11092  
 11093  	// do request
 11094  	data, err := o.Client.Do(ctx, "GET", url, body)
 11095  	if err != nil {
 11096  		return nil, err
 11097  	}
 11098  
 11099  	// build results
 11100  	results, err := o.transformMonitorCPUResults(data)
 11101  	if err != nil {
 11102  		return nil, err
 11103  	}
 11104  	return results.CPUTimeActivity, nil
 11105  }
 11106  
 11107  /*************************************************
 11108  * ServerPlanOp
 11109  *************************************************/
 11110  
 11111  // ServerPlanOp implements ServerPlanAPI interface
 11112  type ServerPlanOp struct {
 11113  	// Client APICaller
 11114  	Client APICaller
 11115  	// PathSuffix is used when building URL
 11116  	PathSuffix string
 11117  	// PathName is used when building URL
 11118  	PathName string
 11119  }
 11120  
 11121  // NewServerPlanOp creates new ServerPlanOp instance
 11122  func NewServerPlanOp(caller APICaller) ServerPlanAPI {
 11123  	return GetClientFactoryFunc("ServerPlan")(caller).(ServerPlanAPI)
 11124  }
 11125  
 11126  // Find is API call
 11127  func (o *ServerPlanOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*ServerPlanFindResult, error) {
 11128  	// build request URL
 11129  	pathBuildParameter := map[string]interface{}{
 11130  		"rootURL":    SakuraCloudAPIRoot,
 11131  		"pathSuffix": o.PathSuffix,
 11132  		"pathName":   o.PathName,
 11133  		"zone":       zone,
 11134  		"conditions": conditions,
 11135  	}
 11136  
 11137  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11138  	if err != nil {
 11139  		return nil, err
 11140  	}
 11141  	// build request body
 11142  	var body interface{}
 11143  	v, err := o.transformFindArgs(conditions)
 11144  	if err != nil {
 11145  		return nil, err
 11146  	}
 11147  	body = v
 11148  
 11149  	// do request
 11150  	data, err := o.Client.Do(ctx, "GET", url, body)
 11151  	if err != nil {
 11152  		return nil, err
 11153  	}
 11154  
 11155  	// build results
 11156  	results, err := o.transformFindResults(data)
 11157  	if err != nil {
 11158  		return nil, err
 11159  	}
 11160  	return results, err
 11161  }
 11162  
 11163  // Read is API call
 11164  func (o *ServerPlanOp) Read(ctx context.Context, zone string, id types.ID) (*ServerPlan, error) {
 11165  	// build request URL
 11166  	pathBuildParameter := map[string]interface{}{
 11167  		"rootURL":    SakuraCloudAPIRoot,
 11168  		"pathSuffix": o.PathSuffix,
 11169  		"pathName":   o.PathName,
 11170  		"zone":       zone,
 11171  		"id":         id,
 11172  	}
 11173  
 11174  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11175  	if err != nil {
 11176  		return nil, err
 11177  	}
 11178  	// build request body
 11179  	var body interface{}
 11180  
 11181  	// do request
 11182  	data, err := o.Client.Do(ctx, "GET", url, body)
 11183  	if err != nil {
 11184  		return nil, err
 11185  	}
 11186  
 11187  	// build results
 11188  	results, err := o.transformReadResults(data)
 11189  	if err != nil {
 11190  		return nil, err
 11191  	}
 11192  	return results.ServerPlan, nil
 11193  }
 11194  
 11195  /*************************************************
 11196  * ServiceClassOp
 11197  *************************************************/
 11198  
 11199  // ServiceClassOp implements ServiceClassAPI interface
 11200  type ServiceClassOp struct {
 11201  	// Client APICaller
 11202  	Client APICaller
 11203  	// PathSuffix is used when building URL
 11204  	PathSuffix string
 11205  	// PathName is used when building URL
 11206  	PathName string
 11207  }
 11208  
 11209  // NewServiceClassOp creates new ServiceClassOp instance
 11210  func NewServiceClassOp(caller APICaller) ServiceClassAPI {
 11211  	return GetClientFactoryFunc("ServiceClass")(caller).(ServiceClassAPI)
 11212  }
 11213  
 11214  // Find is API call
 11215  func (o *ServiceClassOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*ServiceClassFindResult, error) {
 11216  	// build request URL
 11217  	pathBuildParameter := map[string]interface{}{
 11218  		"rootURL":    SakuraCloudAPIRoot,
 11219  		"pathSuffix": o.PathSuffix,
 11220  		"pathName":   o.PathName,
 11221  		"zone":       zone,
 11222  		"conditions": conditions,
 11223  	}
 11224  
 11225  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11226  	if err != nil {
 11227  		return nil, err
 11228  	}
 11229  	// build request body
 11230  	var body interface{}
 11231  	v, err := o.transformFindArgs(conditions)
 11232  	if err != nil {
 11233  		return nil, err
 11234  	}
 11235  	body = v
 11236  
 11237  	// do request
 11238  	data, err := o.Client.Do(ctx, "GET", url, body)
 11239  	if err != nil {
 11240  		return nil, err
 11241  	}
 11242  
 11243  	// build results
 11244  	results, err := o.transformFindResults(data)
 11245  	if err != nil {
 11246  		return nil, err
 11247  	}
 11248  	return results, err
 11249  }
 11250  
 11251  /*************************************************
 11252  * SIMOp
 11253  *************************************************/
 11254  
 11255  // SIMOp implements SIMAPI interface
 11256  type SIMOp struct {
 11257  	// Client APICaller
 11258  	Client APICaller
 11259  	// PathSuffix is used when building URL
 11260  	PathSuffix string
 11261  	// PathName is used when building URL
 11262  	PathName string
 11263  }
 11264  
 11265  // NewSIMOp creates new SIMOp instance
 11266  func NewSIMOp(caller APICaller) SIMAPI {
 11267  	return GetClientFactoryFunc("SIM")(caller).(SIMAPI)
 11268  }
 11269  
 11270  // Find is API call
 11271  func (o *SIMOp) Find(ctx context.Context, conditions *FindCondition) (*SIMFindResult, error) {
 11272  	// build request URL
 11273  	pathBuildParameter := map[string]interface{}{
 11274  		"rootURL":    SakuraCloudAPIRoot,
 11275  		"pathSuffix": o.PathSuffix,
 11276  		"pathName":   o.PathName,
 11277  		"zone":       APIDefaultZone,
 11278  		"conditions": conditions,
 11279  	}
 11280  
 11281  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11282  	if err != nil {
 11283  		return nil, err
 11284  	}
 11285  	// build request body
 11286  	var body interface{}
 11287  	v, err := o.transformFindArgs(conditions)
 11288  	if err != nil {
 11289  		return nil, err
 11290  	}
 11291  	body = v
 11292  
 11293  	// do request
 11294  	data, err := o.Client.Do(ctx, "GET", url, body)
 11295  	if err != nil {
 11296  		return nil, err
 11297  	}
 11298  
 11299  	// build results
 11300  	results, err := o.transformFindResults(data)
 11301  	if err != nil {
 11302  		return nil, err
 11303  	}
 11304  	return results, err
 11305  }
 11306  
 11307  // Create is API call
 11308  func (o *SIMOp) Create(ctx context.Context, param *SIMCreateRequest) (*SIM, error) {
 11309  	// build request URL
 11310  	pathBuildParameter := map[string]interface{}{
 11311  		"rootURL":    SakuraCloudAPIRoot,
 11312  		"pathSuffix": o.PathSuffix,
 11313  		"pathName":   o.PathName,
 11314  		"zone":       APIDefaultZone,
 11315  		"param":      param,
 11316  	}
 11317  
 11318  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11319  	if err != nil {
 11320  		return nil, err
 11321  	}
 11322  	// build request body
 11323  	var body interface{}
 11324  	v, err := o.transformCreateArgs(param)
 11325  	if err != nil {
 11326  		return nil, err
 11327  	}
 11328  	body = v
 11329  
 11330  	// do request
 11331  	data, err := o.Client.Do(ctx, "POST", url, body)
 11332  	if err != nil {
 11333  		return nil, err
 11334  	}
 11335  
 11336  	// build results
 11337  	results, err := o.transformCreateResults(data)
 11338  	if err != nil {
 11339  		return nil, err
 11340  	}
 11341  	return results.SIM, nil
 11342  }
 11343  
 11344  // Read is API call
 11345  func (o *SIMOp) Read(ctx context.Context, id types.ID) (*SIM, error) {
 11346  	// build request URL
 11347  	pathBuildParameter := map[string]interface{}{
 11348  		"rootURL":    SakuraCloudAPIRoot,
 11349  		"pathSuffix": o.PathSuffix,
 11350  		"pathName":   o.PathName,
 11351  		"zone":       APIDefaultZone,
 11352  		"id":         id,
 11353  	}
 11354  
 11355  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11356  	if err != nil {
 11357  		return nil, err
 11358  	}
 11359  	// build request body
 11360  	var body interface{}
 11361  
 11362  	// do request
 11363  	data, err := o.Client.Do(ctx, "GET", url, body)
 11364  	if err != nil {
 11365  		return nil, err
 11366  	}
 11367  
 11368  	// build results
 11369  	results, err := o.transformReadResults(data)
 11370  	if err != nil {
 11371  		return nil, err
 11372  	}
 11373  	return results.SIM, nil
 11374  }
 11375  
 11376  // Update is API call
 11377  func (o *SIMOp) Update(ctx context.Context, id types.ID, param *SIMUpdateRequest) (*SIM, error) {
 11378  	// build request URL
 11379  	pathBuildParameter := map[string]interface{}{
 11380  		"rootURL":    SakuraCloudAPIRoot,
 11381  		"pathSuffix": o.PathSuffix,
 11382  		"pathName":   o.PathName,
 11383  		"zone":       APIDefaultZone,
 11384  		"id":         id,
 11385  		"param":      param,
 11386  	}
 11387  
 11388  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11389  	if err != nil {
 11390  		return nil, err
 11391  	}
 11392  	// build request body
 11393  	var body interface{}
 11394  	v, err := o.transformUpdateArgs(id, param)
 11395  	if err != nil {
 11396  		return nil, err
 11397  	}
 11398  	body = v
 11399  
 11400  	// do request
 11401  	data, err := o.Client.Do(ctx, "PUT", url, body)
 11402  	if err != nil {
 11403  		return nil, err
 11404  	}
 11405  
 11406  	// build results
 11407  	results, err := o.transformUpdateResults(data)
 11408  	if err != nil {
 11409  		return nil, err
 11410  	}
 11411  	return results.SIM, nil
 11412  }
 11413  
 11414  // Delete is API call
 11415  func (o *SIMOp) Delete(ctx context.Context, id types.ID) error {
 11416  	// build request URL
 11417  	pathBuildParameter := map[string]interface{}{
 11418  		"rootURL":    SakuraCloudAPIRoot,
 11419  		"pathSuffix": o.PathSuffix,
 11420  		"pathName":   o.PathName,
 11421  		"zone":       APIDefaultZone,
 11422  		"id":         id,
 11423  	}
 11424  
 11425  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11426  	if err != nil {
 11427  		return err
 11428  	}
 11429  	// build request body
 11430  	var body interface{}
 11431  
 11432  	// do request
 11433  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 11434  	if err != nil {
 11435  		return err
 11436  	}
 11437  
 11438  	// build results
 11439  
 11440  	return nil
 11441  }
 11442  
 11443  // Activate is API call
 11444  func (o *SIMOp) Activate(ctx context.Context, id types.ID) error {
 11445  	// build request URL
 11446  	pathBuildParameter := map[string]interface{}{
 11447  		"rootURL":    SakuraCloudAPIRoot,
 11448  		"pathSuffix": o.PathSuffix,
 11449  		"pathName":   o.PathName,
 11450  		"zone":       APIDefaultZone,
 11451  		"id":         id,
 11452  	}
 11453  
 11454  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/activate", pathBuildParameter)
 11455  	if err != nil {
 11456  		return err
 11457  	}
 11458  	// build request body
 11459  	var body interface{}
 11460  
 11461  	// do request
 11462  	_, err = o.Client.Do(ctx, "PUT", url, body)
 11463  	if err != nil {
 11464  		return err
 11465  	}
 11466  
 11467  	// build results
 11468  
 11469  	return nil
 11470  }
 11471  
 11472  // Deactivate is API call
 11473  func (o *SIMOp) Deactivate(ctx context.Context, id types.ID) error {
 11474  	// build request URL
 11475  	pathBuildParameter := map[string]interface{}{
 11476  		"rootURL":    SakuraCloudAPIRoot,
 11477  		"pathSuffix": o.PathSuffix,
 11478  		"pathName":   o.PathName,
 11479  		"zone":       APIDefaultZone,
 11480  		"id":         id,
 11481  	}
 11482  
 11483  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/deactivate", pathBuildParameter)
 11484  	if err != nil {
 11485  		return err
 11486  	}
 11487  	// build request body
 11488  	var body interface{}
 11489  
 11490  	// do request
 11491  	_, err = o.Client.Do(ctx, "PUT", url, body)
 11492  	if err != nil {
 11493  		return err
 11494  	}
 11495  
 11496  	// build results
 11497  
 11498  	return nil
 11499  }
 11500  
 11501  // AssignIP is API call
 11502  func (o *SIMOp) AssignIP(ctx context.Context, id types.ID, param *SIMAssignIPRequest) error {
 11503  	// build request URL
 11504  	pathBuildParameter := map[string]interface{}{
 11505  		"rootURL":    SakuraCloudAPIRoot,
 11506  		"pathSuffix": o.PathSuffix,
 11507  		"pathName":   o.PathName,
 11508  		"zone":       APIDefaultZone,
 11509  		"id":         id,
 11510  		"param":      param,
 11511  	}
 11512  
 11513  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/ip", pathBuildParameter)
 11514  	if err != nil {
 11515  		return err
 11516  	}
 11517  	// build request body
 11518  	var body interface{}
 11519  	v, err := o.transformAssignIPArgs(id, param)
 11520  	if err != nil {
 11521  		return err
 11522  	}
 11523  	body = v
 11524  
 11525  	// do request
 11526  	_, err = o.Client.Do(ctx, "PUT", url, body)
 11527  	if err != nil {
 11528  		return err
 11529  	}
 11530  
 11531  	// build results
 11532  
 11533  	return nil
 11534  }
 11535  
 11536  // ClearIP is API call
 11537  func (o *SIMOp) ClearIP(ctx context.Context, id types.ID) error {
 11538  	// build request URL
 11539  	pathBuildParameter := map[string]interface{}{
 11540  		"rootURL":    SakuraCloudAPIRoot,
 11541  		"pathSuffix": o.PathSuffix,
 11542  		"pathName":   o.PathName,
 11543  		"zone":       APIDefaultZone,
 11544  		"id":         id,
 11545  	}
 11546  
 11547  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/ip", pathBuildParameter)
 11548  	if err != nil {
 11549  		return err
 11550  	}
 11551  	// build request body
 11552  	var body interface{}
 11553  
 11554  	// do request
 11555  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 11556  	if err != nil {
 11557  		return err
 11558  	}
 11559  
 11560  	// build results
 11561  
 11562  	return nil
 11563  }
 11564  
 11565  // IMEILock is API call
 11566  func (o *SIMOp) IMEILock(ctx context.Context, id types.ID, param *SIMIMEILockRequest) error {
 11567  	// build request URL
 11568  	pathBuildParameter := map[string]interface{}{
 11569  		"rootURL":    SakuraCloudAPIRoot,
 11570  		"pathSuffix": o.PathSuffix,
 11571  		"pathName":   o.PathName,
 11572  		"zone":       APIDefaultZone,
 11573  		"id":         id,
 11574  		"param":      param,
 11575  	}
 11576  
 11577  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/imeilock", pathBuildParameter)
 11578  	if err != nil {
 11579  		return err
 11580  	}
 11581  	// build request body
 11582  	var body interface{}
 11583  	v, err := o.transformIMEILockArgs(id, param)
 11584  	if err != nil {
 11585  		return err
 11586  	}
 11587  	body = v
 11588  
 11589  	// do request
 11590  	_, err = o.Client.Do(ctx, "PUT", url, body)
 11591  	if err != nil {
 11592  		return err
 11593  	}
 11594  
 11595  	// build results
 11596  
 11597  	return nil
 11598  }
 11599  
 11600  // IMEIUnlock is API call
 11601  func (o *SIMOp) IMEIUnlock(ctx context.Context, id types.ID) error {
 11602  	// build request URL
 11603  	pathBuildParameter := map[string]interface{}{
 11604  		"rootURL":    SakuraCloudAPIRoot,
 11605  		"pathSuffix": o.PathSuffix,
 11606  		"pathName":   o.PathName,
 11607  		"zone":       APIDefaultZone,
 11608  		"id":         id,
 11609  	}
 11610  
 11611  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/imeilock", pathBuildParameter)
 11612  	if err != nil {
 11613  		return err
 11614  	}
 11615  	// build request body
 11616  	var body interface{}
 11617  
 11618  	// do request
 11619  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 11620  	if err != nil {
 11621  		return err
 11622  	}
 11623  
 11624  	// build results
 11625  
 11626  	return nil
 11627  }
 11628  
 11629  // Logs is API call
 11630  func (o *SIMOp) Logs(ctx context.Context, id types.ID) (*SIMLogsResult, error) {
 11631  	// build request URL
 11632  	pathBuildParameter := map[string]interface{}{
 11633  		"rootURL":    SakuraCloudAPIRoot,
 11634  		"pathSuffix": o.PathSuffix,
 11635  		"pathName":   o.PathName,
 11636  		"zone":       APIDefaultZone,
 11637  		"id":         id,
 11638  	}
 11639  
 11640  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/sessionlog", pathBuildParameter)
 11641  	if err != nil {
 11642  		return nil, err
 11643  	}
 11644  	// build request body
 11645  	var body interface{}
 11646  
 11647  	// do request
 11648  	data, err := o.Client.Do(ctx, "GET", url, body)
 11649  	if err != nil {
 11650  		return nil, err
 11651  	}
 11652  
 11653  	// build results
 11654  	results, err := o.transformLogsResults(data)
 11655  	if err != nil {
 11656  		return nil, err
 11657  	}
 11658  	return results, err
 11659  }
 11660  
 11661  // GetNetworkOperator is API call
 11662  func (o *SIMOp) GetNetworkOperator(ctx context.Context, id types.ID) ([]*SIMNetworkOperatorConfig, error) {
 11663  	// build request URL
 11664  	pathBuildParameter := map[string]interface{}{
 11665  		"rootURL":    SakuraCloudAPIRoot,
 11666  		"pathSuffix": o.PathSuffix,
 11667  		"pathName":   o.PathName,
 11668  		"zone":       APIDefaultZone,
 11669  		"id":         id,
 11670  	}
 11671  
 11672  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/network_operator_config", pathBuildParameter)
 11673  	if err != nil {
 11674  		return nil, err
 11675  	}
 11676  	// build request body
 11677  	var body interface{}
 11678  
 11679  	// do request
 11680  	data, err := o.Client.Do(ctx, "GET", url, body)
 11681  	if err != nil {
 11682  		return nil, err
 11683  	}
 11684  
 11685  	// build results
 11686  	results, err := o.transformGetNetworkOperatorResults(data)
 11687  	if err != nil {
 11688  		return nil, err
 11689  	}
 11690  	return results.Configs, nil
 11691  }
 11692  
 11693  // SetNetworkOperator is API call
 11694  func (o *SIMOp) SetNetworkOperator(ctx context.Context, id types.ID, configs []*SIMNetworkOperatorConfig) error {
 11695  	// build request URL
 11696  	pathBuildParameter := map[string]interface{}{
 11697  		"rootURL":    SakuraCloudAPIRoot,
 11698  		"pathSuffix": o.PathSuffix,
 11699  		"pathName":   o.PathName,
 11700  		"zone":       APIDefaultZone,
 11701  		"id":         id,
 11702  		"configs":    configs,
 11703  	}
 11704  
 11705  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/network_operator_config", pathBuildParameter)
 11706  	if err != nil {
 11707  		return err
 11708  	}
 11709  	// build request body
 11710  	var body interface{}
 11711  	v, err := o.transformSetNetworkOperatorArgs(id, configs)
 11712  	if err != nil {
 11713  		return err
 11714  	}
 11715  	body = v
 11716  
 11717  	// do request
 11718  	_, err = o.Client.Do(ctx, "PUT", url, body)
 11719  	if err != nil {
 11720  		return err
 11721  	}
 11722  
 11723  	// build results
 11724  
 11725  	return nil
 11726  }
 11727  
 11728  // MonitorSIM is API call
 11729  func (o *SIMOp) MonitorSIM(ctx context.Context, id types.ID, condition *MonitorCondition) (*LinkActivity, error) {
 11730  	// build request URL
 11731  	pathBuildParameter := map[string]interface{}{
 11732  		"rootURL":    SakuraCloudAPIRoot,
 11733  		"pathSuffix": o.PathSuffix,
 11734  		"pathName":   o.PathName,
 11735  		"zone":       APIDefaultZone,
 11736  		"id":         id,
 11737  		"condition":  condition,
 11738  	}
 11739  
 11740  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/metrics/monitor", pathBuildParameter)
 11741  	if err != nil {
 11742  		return nil, err
 11743  	}
 11744  	// build request body
 11745  	var body interface{}
 11746  	v, err := o.transformMonitorSIMArgs(id, condition)
 11747  	if err != nil {
 11748  		return nil, err
 11749  	}
 11750  	body = v
 11751  
 11752  	// do request
 11753  	data, err := o.Client.Do(ctx, "GET", url, body)
 11754  	if err != nil {
 11755  		return nil, err
 11756  	}
 11757  
 11758  	// build results
 11759  	results, err := o.transformMonitorSIMResults(data)
 11760  	if err != nil {
 11761  		return nil, err
 11762  	}
 11763  	return results.LinkActivity, nil
 11764  }
 11765  
 11766  // Status is API call
 11767  func (o *SIMOp) Status(ctx context.Context, id types.ID) (*SIMInfo, error) {
 11768  	// build request URL
 11769  	pathBuildParameter := map[string]interface{}{
 11770  		"rootURL":    SakuraCloudAPIRoot,
 11771  		"pathSuffix": o.PathSuffix,
 11772  		"pathName":   o.PathName,
 11773  		"zone":       APIDefaultZone,
 11774  		"id":         id,
 11775  	}
 11776  
 11777  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/sim/status", pathBuildParameter)
 11778  	if err != nil {
 11779  		return nil, err
 11780  	}
 11781  	// build request body
 11782  	var body interface{}
 11783  
 11784  	// do request
 11785  	data, err := o.Client.Do(ctx, "GET", url, body)
 11786  	if err != nil {
 11787  		return nil, err
 11788  	}
 11789  
 11790  	// build results
 11791  	results, err := o.transformStatusResults(data)
 11792  	if err != nil {
 11793  		return nil, err
 11794  	}
 11795  	return results.SIM, nil
 11796  }
 11797  
 11798  /*************************************************
 11799  * SimpleMonitorOp
 11800  *************************************************/
 11801  
 11802  // SimpleMonitorOp implements SimpleMonitorAPI interface
 11803  type SimpleMonitorOp struct {
 11804  	// Client APICaller
 11805  	Client APICaller
 11806  	// PathSuffix is used when building URL
 11807  	PathSuffix string
 11808  	// PathName is used when building URL
 11809  	PathName string
 11810  }
 11811  
 11812  // NewSimpleMonitorOp creates new SimpleMonitorOp instance
 11813  func NewSimpleMonitorOp(caller APICaller) SimpleMonitorAPI {
 11814  	return GetClientFactoryFunc("SimpleMonitor")(caller).(SimpleMonitorAPI)
 11815  }
 11816  
 11817  // Find is API call
 11818  func (o *SimpleMonitorOp) Find(ctx context.Context, conditions *FindCondition) (*SimpleMonitorFindResult, error) {
 11819  	// build request URL
 11820  	pathBuildParameter := map[string]interface{}{
 11821  		"rootURL":    SakuraCloudAPIRoot,
 11822  		"pathSuffix": o.PathSuffix,
 11823  		"pathName":   o.PathName,
 11824  		"zone":       APIDefaultZone,
 11825  		"conditions": conditions,
 11826  	}
 11827  
 11828  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11829  	if err != nil {
 11830  		return nil, err
 11831  	}
 11832  	// build request body
 11833  	var body interface{}
 11834  	v, err := o.transformFindArgs(conditions)
 11835  	if err != nil {
 11836  		return nil, err
 11837  	}
 11838  	body = v
 11839  
 11840  	// do request
 11841  	data, err := o.Client.Do(ctx, "GET", url, body)
 11842  	if err != nil {
 11843  		return nil, err
 11844  	}
 11845  
 11846  	// build results
 11847  	results, err := o.transformFindResults(data)
 11848  	if err != nil {
 11849  		return nil, err
 11850  	}
 11851  	return results, err
 11852  }
 11853  
 11854  // Create is API call
 11855  func (o *SimpleMonitorOp) Create(ctx context.Context, param *SimpleMonitorCreateRequest) (*SimpleMonitor, error) {
 11856  	// build request URL
 11857  	pathBuildParameter := map[string]interface{}{
 11858  		"rootURL":    SakuraCloudAPIRoot,
 11859  		"pathSuffix": o.PathSuffix,
 11860  		"pathName":   o.PathName,
 11861  		"zone":       APIDefaultZone,
 11862  		"param":      param,
 11863  	}
 11864  
 11865  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 11866  	if err != nil {
 11867  		return nil, err
 11868  	}
 11869  	// build request body
 11870  	var body interface{}
 11871  	v, err := o.transformCreateArgs(param)
 11872  	if err != nil {
 11873  		return nil, err
 11874  	}
 11875  	body = v
 11876  
 11877  	// do request
 11878  	data, err := o.Client.Do(ctx, "POST", url, body)
 11879  	if err != nil {
 11880  		return nil, err
 11881  	}
 11882  
 11883  	// build results
 11884  	results, err := o.transformCreateResults(data)
 11885  	if err != nil {
 11886  		return nil, err
 11887  	}
 11888  	return results.SimpleMonitor, nil
 11889  }
 11890  
 11891  // Read is API call
 11892  func (o *SimpleMonitorOp) Read(ctx context.Context, id types.ID) (*SimpleMonitor, error) {
 11893  	// build request URL
 11894  	pathBuildParameter := map[string]interface{}{
 11895  		"rootURL":    SakuraCloudAPIRoot,
 11896  		"pathSuffix": o.PathSuffix,
 11897  		"pathName":   o.PathName,
 11898  		"zone":       APIDefaultZone,
 11899  		"id":         id,
 11900  	}
 11901  
 11902  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11903  	if err != nil {
 11904  		return nil, err
 11905  	}
 11906  	// build request body
 11907  	var body interface{}
 11908  
 11909  	// do request
 11910  	data, err := o.Client.Do(ctx, "GET", url, body)
 11911  	if err != nil {
 11912  		return nil, err
 11913  	}
 11914  
 11915  	// build results
 11916  	results, err := o.transformReadResults(data)
 11917  	if err != nil {
 11918  		return nil, err
 11919  	}
 11920  	return results.SimpleMonitor, nil
 11921  }
 11922  
 11923  // Update is API call
 11924  func (o *SimpleMonitorOp) Update(ctx context.Context, id types.ID, param *SimpleMonitorUpdateRequest) (*SimpleMonitor, error) {
 11925  	// build request URL
 11926  	pathBuildParameter := map[string]interface{}{
 11927  		"rootURL":    SakuraCloudAPIRoot,
 11928  		"pathSuffix": o.PathSuffix,
 11929  		"pathName":   o.PathName,
 11930  		"zone":       APIDefaultZone,
 11931  		"id":         id,
 11932  		"param":      param,
 11933  	}
 11934  
 11935  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11936  	if err != nil {
 11937  		return nil, err
 11938  	}
 11939  	// build request body
 11940  	var body interface{}
 11941  	v, err := o.transformUpdateArgs(id, param)
 11942  	if err != nil {
 11943  		return nil, err
 11944  	}
 11945  	body = v
 11946  
 11947  	// do request
 11948  	data, err := o.Client.Do(ctx, "PUT", url, body)
 11949  	if err != nil {
 11950  		return nil, err
 11951  	}
 11952  
 11953  	// build results
 11954  	results, err := o.transformUpdateResults(data)
 11955  	if err != nil {
 11956  		return nil, err
 11957  	}
 11958  	return results.SimpleMonitor, nil
 11959  }
 11960  
 11961  // UpdateSettings is API call
 11962  func (o *SimpleMonitorOp) UpdateSettings(ctx context.Context, id types.ID, param *SimpleMonitorUpdateSettingsRequest) (*SimpleMonitor, error) {
 11963  	// build request URL
 11964  	pathBuildParameter := map[string]interface{}{
 11965  		"rootURL":    SakuraCloudAPIRoot,
 11966  		"pathSuffix": o.PathSuffix,
 11967  		"pathName":   o.PathName,
 11968  		"zone":       APIDefaultZone,
 11969  		"id":         id,
 11970  		"param":      param,
 11971  	}
 11972  
 11973  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 11974  	if err != nil {
 11975  		return nil, err
 11976  	}
 11977  	// build request body
 11978  	var body interface{}
 11979  	v, err := o.transformUpdateSettingsArgs(id, param)
 11980  	if err != nil {
 11981  		return nil, err
 11982  	}
 11983  	body = v
 11984  
 11985  	// do request
 11986  	data, err := o.Client.Do(ctx, "PUT", url, body)
 11987  	if err != nil {
 11988  		return nil, err
 11989  	}
 11990  
 11991  	// build results
 11992  	results, err := o.transformUpdateSettingsResults(data)
 11993  	if err != nil {
 11994  		return nil, err
 11995  	}
 11996  	return results.SimpleMonitor, nil
 11997  }
 11998  
 11999  // Delete is API call
 12000  func (o *SimpleMonitorOp) Delete(ctx context.Context, id types.ID) error {
 12001  	// build request URL
 12002  	pathBuildParameter := map[string]interface{}{
 12003  		"rootURL":    SakuraCloudAPIRoot,
 12004  		"pathSuffix": o.PathSuffix,
 12005  		"pathName":   o.PathName,
 12006  		"zone":       APIDefaultZone,
 12007  		"id":         id,
 12008  	}
 12009  
 12010  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12011  	if err != nil {
 12012  		return err
 12013  	}
 12014  	// build request body
 12015  	var body interface{}
 12016  
 12017  	// do request
 12018  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 12019  	if err != nil {
 12020  		return err
 12021  	}
 12022  
 12023  	// build results
 12024  
 12025  	return nil
 12026  }
 12027  
 12028  // MonitorResponseTime is API call
 12029  func (o *SimpleMonitorOp) MonitorResponseTime(ctx context.Context, id types.ID, condition *MonitorCondition) (*ResponseTimeSecActivity, error) {
 12030  	// build request URL
 12031  	pathBuildParameter := map[string]interface{}{
 12032  		"rootURL":    SakuraCloudAPIRoot,
 12033  		"pathSuffix": o.PathSuffix,
 12034  		"pathName":   o.PathName,
 12035  		"zone":       APIDefaultZone,
 12036  		"id":         id,
 12037  		"condition":  condition,
 12038  	}
 12039  
 12040  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}//activity/responsetimesec/monitor", pathBuildParameter)
 12041  	if err != nil {
 12042  		return nil, err
 12043  	}
 12044  	// build request body
 12045  	var body interface{}
 12046  	v, err := o.transformMonitorResponseTimeArgs(id, condition)
 12047  	if err != nil {
 12048  		return nil, err
 12049  	}
 12050  	body = v
 12051  
 12052  	// do request
 12053  	data, err := o.Client.Do(ctx, "GET", url, body)
 12054  	if err != nil {
 12055  		return nil, err
 12056  	}
 12057  
 12058  	// build results
 12059  	results, err := o.transformMonitorResponseTimeResults(data)
 12060  	if err != nil {
 12061  		return nil, err
 12062  	}
 12063  	return results.ResponseTimeSecActivity, nil
 12064  }
 12065  
 12066  // HealthStatus is API call
 12067  func (o *SimpleMonitorOp) HealthStatus(ctx context.Context, id types.ID) (*SimpleMonitorHealthStatus, error) {
 12068  	// build request URL
 12069  	pathBuildParameter := map[string]interface{}{
 12070  		"rootURL":    SakuraCloudAPIRoot,
 12071  		"pathSuffix": o.PathSuffix,
 12072  		"pathName":   o.PathName,
 12073  		"zone":       APIDefaultZone,
 12074  		"id":         id,
 12075  	}
 12076  
 12077  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/health", pathBuildParameter)
 12078  	if err != nil {
 12079  		return nil, err
 12080  	}
 12081  	// build request body
 12082  	var body interface{}
 12083  
 12084  	// do request
 12085  	data, err := o.Client.Do(ctx, "GET", url, body)
 12086  	if err != nil {
 12087  		return nil, err
 12088  	}
 12089  
 12090  	// build results
 12091  	results, err := o.transformHealthStatusResults(data)
 12092  	if err != nil {
 12093  		return nil, err
 12094  	}
 12095  	return results.SimpleMonitorHealthStatus, nil
 12096  }
 12097  
 12098  /*************************************************
 12099  * SSHKeyOp
 12100  *************************************************/
 12101  
 12102  // SSHKeyOp implements SSHKeyAPI interface
 12103  type SSHKeyOp struct {
 12104  	// Client APICaller
 12105  	Client APICaller
 12106  	// PathSuffix is used when building URL
 12107  	PathSuffix string
 12108  	// PathName is used when building URL
 12109  	PathName string
 12110  }
 12111  
 12112  // NewSSHKeyOp creates new SSHKeyOp instance
 12113  func NewSSHKeyOp(caller APICaller) SSHKeyAPI {
 12114  	return GetClientFactoryFunc("SSHKey")(caller).(SSHKeyAPI)
 12115  }
 12116  
 12117  // Find is API call
 12118  func (o *SSHKeyOp) Find(ctx context.Context, conditions *FindCondition) (*SSHKeyFindResult, error) {
 12119  	// build request URL
 12120  	pathBuildParameter := map[string]interface{}{
 12121  		"rootURL":    SakuraCloudAPIRoot,
 12122  		"pathSuffix": o.PathSuffix,
 12123  		"pathName":   o.PathName,
 12124  		"zone":       APIDefaultZone,
 12125  		"conditions": conditions,
 12126  	}
 12127  
 12128  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12129  	if err != nil {
 12130  		return nil, err
 12131  	}
 12132  	// build request body
 12133  	var body interface{}
 12134  	v, err := o.transformFindArgs(conditions)
 12135  	if err != nil {
 12136  		return nil, err
 12137  	}
 12138  	body = v
 12139  
 12140  	// do request
 12141  	data, err := o.Client.Do(ctx, "GET", url, body)
 12142  	if err != nil {
 12143  		return nil, err
 12144  	}
 12145  
 12146  	// build results
 12147  	results, err := o.transformFindResults(data)
 12148  	if err != nil {
 12149  		return nil, err
 12150  	}
 12151  	return results, err
 12152  }
 12153  
 12154  // Create is API call
 12155  func (o *SSHKeyOp) Create(ctx context.Context, param *SSHKeyCreateRequest) (*SSHKey, error) {
 12156  	// build request URL
 12157  	pathBuildParameter := map[string]interface{}{
 12158  		"rootURL":    SakuraCloudAPIRoot,
 12159  		"pathSuffix": o.PathSuffix,
 12160  		"pathName":   o.PathName,
 12161  		"zone":       APIDefaultZone,
 12162  		"param":      param,
 12163  	}
 12164  
 12165  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12166  	if err != nil {
 12167  		return nil, err
 12168  	}
 12169  	// build request body
 12170  	var body interface{}
 12171  	v, err := o.transformCreateArgs(param)
 12172  	if err != nil {
 12173  		return nil, err
 12174  	}
 12175  	body = v
 12176  
 12177  	// do request
 12178  	data, err := o.Client.Do(ctx, "POST", url, body)
 12179  	if err != nil {
 12180  		return nil, err
 12181  	}
 12182  
 12183  	// build results
 12184  	results, err := o.transformCreateResults(data)
 12185  	if err != nil {
 12186  		return nil, err
 12187  	}
 12188  	return results.SSHKey, nil
 12189  }
 12190  
 12191  // Generate is API call
 12192  func (o *SSHKeyOp) Generate(ctx context.Context, param *SSHKeyGenerateRequest) (*SSHKeyGenerated, error) {
 12193  	// build request URL
 12194  	pathBuildParameter := map[string]interface{}{
 12195  		"rootURL":    SakuraCloudAPIRoot,
 12196  		"pathSuffix": o.PathSuffix,
 12197  		"pathName":   o.PathName,
 12198  		"zone":       APIDefaultZone,
 12199  		"param":      param,
 12200  	}
 12201  
 12202  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/generate", pathBuildParameter)
 12203  	if err != nil {
 12204  		return nil, err
 12205  	}
 12206  	// build request body
 12207  	var body interface{}
 12208  	v, err := o.transformGenerateArgs(param)
 12209  	if err != nil {
 12210  		return nil, err
 12211  	}
 12212  	body = v
 12213  
 12214  	// do request
 12215  	data, err := o.Client.Do(ctx, "POST", url, body)
 12216  	if err != nil {
 12217  		return nil, err
 12218  	}
 12219  
 12220  	// build results
 12221  	results, err := o.transformGenerateResults(data)
 12222  	if err != nil {
 12223  		return nil, err
 12224  	}
 12225  	return results.SSHKeyGenerated, nil
 12226  }
 12227  
 12228  // Read is API call
 12229  func (o *SSHKeyOp) Read(ctx context.Context, id types.ID) (*SSHKey, error) {
 12230  	// build request URL
 12231  	pathBuildParameter := map[string]interface{}{
 12232  		"rootURL":    SakuraCloudAPIRoot,
 12233  		"pathSuffix": o.PathSuffix,
 12234  		"pathName":   o.PathName,
 12235  		"zone":       APIDefaultZone,
 12236  		"id":         id,
 12237  	}
 12238  
 12239  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12240  	if err != nil {
 12241  		return nil, err
 12242  	}
 12243  	// build request body
 12244  	var body interface{}
 12245  
 12246  	// do request
 12247  	data, err := o.Client.Do(ctx, "GET", url, body)
 12248  	if err != nil {
 12249  		return nil, err
 12250  	}
 12251  
 12252  	// build results
 12253  	results, err := o.transformReadResults(data)
 12254  	if err != nil {
 12255  		return nil, err
 12256  	}
 12257  	return results.SSHKey, nil
 12258  }
 12259  
 12260  // Update is API call
 12261  func (o *SSHKeyOp) Update(ctx context.Context, id types.ID, param *SSHKeyUpdateRequest) (*SSHKey, error) {
 12262  	// build request URL
 12263  	pathBuildParameter := map[string]interface{}{
 12264  		"rootURL":    SakuraCloudAPIRoot,
 12265  		"pathSuffix": o.PathSuffix,
 12266  		"pathName":   o.PathName,
 12267  		"zone":       APIDefaultZone,
 12268  		"id":         id,
 12269  		"param":      param,
 12270  	}
 12271  
 12272  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12273  	if err != nil {
 12274  		return nil, err
 12275  	}
 12276  	// build request body
 12277  	var body interface{}
 12278  	v, err := o.transformUpdateArgs(id, param)
 12279  	if err != nil {
 12280  		return nil, err
 12281  	}
 12282  	body = v
 12283  
 12284  	// do request
 12285  	data, err := o.Client.Do(ctx, "PUT", url, body)
 12286  	if err != nil {
 12287  		return nil, err
 12288  	}
 12289  
 12290  	// build results
 12291  	results, err := o.transformUpdateResults(data)
 12292  	if err != nil {
 12293  		return nil, err
 12294  	}
 12295  	return results.SSHKey, nil
 12296  }
 12297  
 12298  // Delete is API call
 12299  func (o *SSHKeyOp) Delete(ctx context.Context, id types.ID) error {
 12300  	// build request URL
 12301  	pathBuildParameter := map[string]interface{}{
 12302  		"rootURL":    SakuraCloudAPIRoot,
 12303  		"pathSuffix": o.PathSuffix,
 12304  		"pathName":   o.PathName,
 12305  		"zone":       APIDefaultZone,
 12306  		"id":         id,
 12307  	}
 12308  
 12309  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12310  	if err != nil {
 12311  		return err
 12312  	}
 12313  	// build request body
 12314  	var body interface{}
 12315  
 12316  	// do request
 12317  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 12318  	if err != nil {
 12319  		return err
 12320  	}
 12321  
 12322  	// build results
 12323  
 12324  	return nil
 12325  }
 12326  
 12327  /*************************************************
 12328  * SubnetOp
 12329  *************************************************/
 12330  
 12331  // SubnetOp implements SubnetAPI interface
 12332  type SubnetOp struct {
 12333  	// Client APICaller
 12334  	Client APICaller
 12335  	// PathSuffix is used when building URL
 12336  	PathSuffix string
 12337  	// PathName is used when building URL
 12338  	PathName string
 12339  }
 12340  
 12341  // NewSubnetOp creates new SubnetOp instance
 12342  func NewSubnetOp(caller APICaller) SubnetAPI {
 12343  	return GetClientFactoryFunc("Subnet")(caller).(SubnetAPI)
 12344  }
 12345  
 12346  // Find is API call
 12347  func (o *SubnetOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*SubnetFindResult, error) {
 12348  	// build request URL
 12349  	pathBuildParameter := map[string]interface{}{
 12350  		"rootURL":    SakuraCloudAPIRoot,
 12351  		"pathSuffix": o.PathSuffix,
 12352  		"pathName":   o.PathName,
 12353  		"zone":       zone,
 12354  		"conditions": conditions,
 12355  	}
 12356  
 12357  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12358  	if err != nil {
 12359  		return nil, err
 12360  	}
 12361  	// build request body
 12362  	var body interface{}
 12363  	v, err := o.transformFindArgs(conditions)
 12364  	if err != nil {
 12365  		return nil, err
 12366  	}
 12367  	body = v
 12368  
 12369  	// do request
 12370  	data, err := o.Client.Do(ctx, "GET", url, body)
 12371  	if err != nil {
 12372  		return nil, err
 12373  	}
 12374  
 12375  	// build results
 12376  	results, err := o.transformFindResults(data)
 12377  	if err != nil {
 12378  		return nil, err
 12379  	}
 12380  	return results, err
 12381  }
 12382  
 12383  // Read is API call
 12384  func (o *SubnetOp) Read(ctx context.Context, zone string, id types.ID) (*Subnet, error) {
 12385  	// build request URL
 12386  	pathBuildParameter := map[string]interface{}{
 12387  		"rootURL":    SakuraCloudAPIRoot,
 12388  		"pathSuffix": o.PathSuffix,
 12389  		"pathName":   o.PathName,
 12390  		"zone":       zone,
 12391  		"id":         id,
 12392  	}
 12393  
 12394  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12395  	if err != nil {
 12396  		return nil, err
 12397  	}
 12398  	// build request body
 12399  	var body interface{}
 12400  
 12401  	// do request
 12402  	data, err := o.Client.Do(ctx, "GET", url, body)
 12403  	if err != nil {
 12404  		return nil, err
 12405  	}
 12406  
 12407  	// build results
 12408  	results, err := o.transformReadResults(data)
 12409  	if err != nil {
 12410  		return nil, err
 12411  	}
 12412  	return results.Subnet, nil
 12413  }
 12414  
 12415  /*************************************************
 12416  * SwitchOp
 12417  *************************************************/
 12418  
 12419  // SwitchOp implements SwitchAPI interface
 12420  type SwitchOp struct {
 12421  	// Client APICaller
 12422  	Client APICaller
 12423  	// PathSuffix is used when building URL
 12424  	PathSuffix string
 12425  	// PathName is used when building URL
 12426  	PathName string
 12427  }
 12428  
 12429  // NewSwitchOp creates new SwitchOp instance
 12430  func NewSwitchOp(caller APICaller) SwitchAPI {
 12431  	return GetClientFactoryFunc("Switch")(caller).(SwitchAPI)
 12432  }
 12433  
 12434  // Find is API call
 12435  func (o *SwitchOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*SwitchFindResult, error) {
 12436  	// build request URL
 12437  	pathBuildParameter := map[string]interface{}{
 12438  		"rootURL":    SakuraCloudAPIRoot,
 12439  		"pathSuffix": o.PathSuffix,
 12440  		"pathName":   o.PathName,
 12441  		"zone":       zone,
 12442  		"conditions": conditions,
 12443  	}
 12444  
 12445  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12446  	if err != nil {
 12447  		return nil, err
 12448  	}
 12449  	// build request body
 12450  	var body interface{}
 12451  	v, err := o.transformFindArgs(conditions)
 12452  	if err != nil {
 12453  		return nil, err
 12454  	}
 12455  	body = v
 12456  
 12457  	// do request
 12458  	data, err := o.Client.Do(ctx, "GET", url, body)
 12459  	if err != nil {
 12460  		return nil, err
 12461  	}
 12462  
 12463  	// build results
 12464  	results, err := o.transformFindResults(data)
 12465  	if err != nil {
 12466  		return nil, err
 12467  	}
 12468  	return results, err
 12469  }
 12470  
 12471  // Create is API call
 12472  func (o *SwitchOp) Create(ctx context.Context, zone string, param *SwitchCreateRequest) (*Switch, error) {
 12473  	// build request URL
 12474  	pathBuildParameter := map[string]interface{}{
 12475  		"rootURL":    SakuraCloudAPIRoot,
 12476  		"pathSuffix": o.PathSuffix,
 12477  		"pathName":   o.PathName,
 12478  		"zone":       zone,
 12479  		"param":      param,
 12480  	}
 12481  
 12482  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12483  	if err != nil {
 12484  		return nil, err
 12485  	}
 12486  	// build request body
 12487  	var body interface{}
 12488  	v, err := o.transformCreateArgs(param)
 12489  	if err != nil {
 12490  		return nil, err
 12491  	}
 12492  	body = v
 12493  
 12494  	// do request
 12495  	data, err := o.Client.Do(ctx, "POST", url, body)
 12496  	if err != nil {
 12497  		return nil, err
 12498  	}
 12499  
 12500  	// build results
 12501  	results, err := o.transformCreateResults(data)
 12502  	if err != nil {
 12503  		return nil, err
 12504  	}
 12505  	return results.Switch, nil
 12506  }
 12507  
 12508  // Read is API call
 12509  func (o *SwitchOp) Read(ctx context.Context, zone string, id types.ID) (*Switch, error) {
 12510  	// build request URL
 12511  	pathBuildParameter := map[string]interface{}{
 12512  		"rootURL":    SakuraCloudAPIRoot,
 12513  		"pathSuffix": o.PathSuffix,
 12514  		"pathName":   o.PathName,
 12515  		"zone":       zone,
 12516  		"id":         id,
 12517  	}
 12518  
 12519  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12520  	if err != nil {
 12521  		return nil, err
 12522  	}
 12523  	// build request body
 12524  	var body interface{}
 12525  
 12526  	// do request
 12527  	data, err := o.Client.Do(ctx, "GET", url, body)
 12528  	if err != nil {
 12529  		return nil, err
 12530  	}
 12531  
 12532  	// build results
 12533  	results, err := o.transformReadResults(data)
 12534  	if err != nil {
 12535  		return nil, err
 12536  	}
 12537  	return results.Switch, nil
 12538  }
 12539  
 12540  // Update is API call
 12541  func (o *SwitchOp) Update(ctx context.Context, zone string, id types.ID, param *SwitchUpdateRequest) (*Switch, error) {
 12542  	// build request URL
 12543  	pathBuildParameter := map[string]interface{}{
 12544  		"rootURL":    SakuraCloudAPIRoot,
 12545  		"pathSuffix": o.PathSuffix,
 12546  		"pathName":   o.PathName,
 12547  		"zone":       zone,
 12548  		"id":         id,
 12549  		"param":      param,
 12550  	}
 12551  
 12552  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12553  	if err != nil {
 12554  		return nil, err
 12555  	}
 12556  	// build request body
 12557  	var body interface{}
 12558  	v, err := o.transformUpdateArgs(id, param)
 12559  	if err != nil {
 12560  		return nil, err
 12561  	}
 12562  	body = v
 12563  
 12564  	// do request
 12565  	data, err := o.Client.Do(ctx, "PUT", url, body)
 12566  	if err != nil {
 12567  		return nil, err
 12568  	}
 12569  
 12570  	// build results
 12571  	results, err := o.transformUpdateResults(data)
 12572  	if err != nil {
 12573  		return nil, err
 12574  	}
 12575  	return results.Switch, nil
 12576  }
 12577  
 12578  // Delete is API call
 12579  func (o *SwitchOp) Delete(ctx context.Context, zone string, id types.ID) error {
 12580  	// build request URL
 12581  	pathBuildParameter := map[string]interface{}{
 12582  		"rootURL":    SakuraCloudAPIRoot,
 12583  		"pathSuffix": o.PathSuffix,
 12584  		"pathName":   o.PathName,
 12585  		"zone":       zone,
 12586  		"id":         id,
 12587  	}
 12588  
 12589  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12590  	if err != nil {
 12591  		return err
 12592  	}
 12593  	// build request body
 12594  	var body interface{}
 12595  
 12596  	// do request
 12597  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 12598  	if err != nil {
 12599  		return err
 12600  	}
 12601  
 12602  	// build results
 12603  
 12604  	return nil
 12605  }
 12606  
 12607  // ConnectToBridge is API call
 12608  func (o *SwitchOp) ConnectToBridge(ctx context.Context, zone string, id types.ID, bridgeID types.ID) error {
 12609  	// build request URL
 12610  	pathBuildParameter := map[string]interface{}{
 12611  		"rootURL":    SakuraCloudAPIRoot,
 12612  		"pathSuffix": o.PathSuffix,
 12613  		"pathName":   o.PathName,
 12614  		"zone":       zone,
 12615  		"id":         id,
 12616  		"bridgeID":   bridgeID,
 12617  	}
 12618  
 12619  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/bridge/{{.bridgeID}}", pathBuildParameter)
 12620  	if err != nil {
 12621  		return err
 12622  	}
 12623  	// build request body
 12624  	var body interface{}
 12625  
 12626  	// do request
 12627  	_, err = o.Client.Do(ctx, "PUT", url, body)
 12628  	if err != nil {
 12629  		return err
 12630  	}
 12631  
 12632  	// build results
 12633  
 12634  	return nil
 12635  }
 12636  
 12637  // DisconnectFromBridge is API call
 12638  func (o *SwitchOp) DisconnectFromBridge(ctx context.Context, zone string, id types.ID) error {
 12639  	// build request URL
 12640  	pathBuildParameter := map[string]interface{}{
 12641  		"rootURL":    SakuraCloudAPIRoot,
 12642  		"pathSuffix": o.PathSuffix,
 12643  		"pathName":   o.PathName,
 12644  		"zone":       zone,
 12645  		"id":         id,
 12646  	}
 12647  
 12648  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/to/bridge/", pathBuildParameter)
 12649  	if err != nil {
 12650  		return err
 12651  	}
 12652  	// build request body
 12653  	var body interface{}
 12654  
 12655  	// do request
 12656  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 12657  	if err != nil {
 12658  		return err
 12659  	}
 12660  
 12661  	// build results
 12662  
 12663  	return nil
 12664  }
 12665  
 12666  // GetServers is API call
 12667  func (o *SwitchOp) GetServers(ctx context.Context, zone string, id types.ID) (*SwitchGetServersResult, error) {
 12668  	// build request URL
 12669  	pathBuildParameter := map[string]interface{}{
 12670  		"rootURL":    SakuraCloudAPIRoot,
 12671  		"pathSuffix": o.PathSuffix,
 12672  		"pathName":   o.PathName,
 12673  		"zone":       zone,
 12674  		"id":         id,
 12675  	}
 12676  
 12677  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/server", pathBuildParameter)
 12678  	if err != nil {
 12679  		return nil, err
 12680  	}
 12681  	// build request body
 12682  	var body interface{}
 12683  
 12684  	// do request
 12685  	data, err := o.Client.Do(ctx, "GET", url, body)
 12686  	if err != nil {
 12687  		return nil, err
 12688  	}
 12689  
 12690  	// build results
 12691  	results, err := o.transformGetServersResults(data)
 12692  	if err != nil {
 12693  		return nil, err
 12694  	}
 12695  	return results, err
 12696  }
 12697  
 12698  /*************************************************
 12699  * VPCRouterOp
 12700  *************************************************/
 12701  
 12702  // VPCRouterOp implements VPCRouterAPI interface
 12703  type VPCRouterOp struct {
 12704  	// Client APICaller
 12705  	Client APICaller
 12706  	// PathSuffix is used when building URL
 12707  	PathSuffix string
 12708  	// PathName is used when building URL
 12709  	PathName string
 12710  }
 12711  
 12712  // NewVPCRouterOp creates new VPCRouterOp instance
 12713  func NewVPCRouterOp(caller APICaller) VPCRouterAPI {
 12714  	return GetClientFactoryFunc("VPCRouter")(caller).(VPCRouterAPI)
 12715  }
 12716  
 12717  // Find is API call
 12718  func (o *VPCRouterOp) Find(ctx context.Context, zone string, conditions *FindCondition) (*VPCRouterFindResult, error) {
 12719  	// build request URL
 12720  	pathBuildParameter := map[string]interface{}{
 12721  		"rootURL":    SakuraCloudAPIRoot,
 12722  		"pathSuffix": o.PathSuffix,
 12723  		"pathName":   o.PathName,
 12724  		"zone":       zone,
 12725  		"conditions": conditions,
 12726  	}
 12727  
 12728  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12729  	if err != nil {
 12730  		return nil, err
 12731  	}
 12732  	// build request body
 12733  	var body interface{}
 12734  	v, err := o.transformFindArgs(conditions)
 12735  	if err != nil {
 12736  		return nil, err
 12737  	}
 12738  	body = v
 12739  
 12740  	// do request
 12741  	data, err := o.Client.Do(ctx, "GET", url, body)
 12742  	if err != nil {
 12743  		return nil, err
 12744  	}
 12745  
 12746  	// build results
 12747  	results, err := o.transformFindResults(data)
 12748  	if err != nil {
 12749  		return nil, err
 12750  	}
 12751  	return results, err
 12752  }
 12753  
 12754  // Create is API call
 12755  func (o *VPCRouterOp) Create(ctx context.Context, zone string, param *VPCRouterCreateRequest) (*VPCRouter, error) {
 12756  	// build request URL
 12757  	pathBuildParameter := map[string]interface{}{
 12758  		"rootURL":    SakuraCloudAPIRoot,
 12759  		"pathSuffix": o.PathSuffix,
 12760  		"pathName":   o.PathName,
 12761  		"zone":       zone,
 12762  		"param":      param,
 12763  	}
 12764  
 12765  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 12766  	if err != nil {
 12767  		return nil, err
 12768  	}
 12769  	// build request body
 12770  	var body interface{}
 12771  	v, err := o.transformCreateArgs(param)
 12772  	if err != nil {
 12773  		return nil, err
 12774  	}
 12775  	body = v
 12776  
 12777  	// do request
 12778  	data, err := o.Client.Do(ctx, "POST", url, body)
 12779  	if err != nil {
 12780  		return nil, err
 12781  	}
 12782  
 12783  	// build results
 12784  	results, err := o.transformCreateResults(data)
 12785  	if err != nil {
 12786  		return nil, err
 12787  	}
 12788  	return results.VPCRouter, nil
 12789  }
 12790  
 12791  // Read is API call
 12792  func (o *VPCRouterOp) Read(ctx context.Context, zone string, id types.ID) (*VPCRouter, error) {
 12793  	// build request URL
 12794  	pathBuildParameter := map[string]interface{}{
 12795  		"rootURL":    SakuraCloudAPIRoot,
 12796  		"pathSuffix": o.PathSuffix,
 12797  		"pathName":   o.PathName,
 12798  		"zone":       zone,
 12799  		"id":         id,
 12800  	}
 12801  
 12802  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12803  	if err != nil {
 12804  		return nil, err
 12805  	}
 12806  	// build request body
 12807  	var body interface{}
 12808  
 12809  	// do request
 12810  	data, err := o.Client.Do(ctx, "GET", url, body)
 12811  	if err != nil {
 12812  		return nil, err
 12813  	}
 12814  
 12815  	// build results
 12816  	results, err := o.transformReadResults(data)
 12817  	if err != nil {
 12818  		return nil, err
 12819  	}
 12820  	return results.VPCRouter, nil
 12821  }
 12822  
 12823  // Update is API call
 12824  func (o *VPCRouterOp) Update(ctx context.Context, zone string, id types.ID, param *VPCRouterUpdateRequest) (*VPCRouter, error) {
 12825  	// build request URL
 12826  	pathBuildParameter := map[string]interface{}{
 12827  		"rootURL":    SakuraCloudAPIRoot,
 12828  		"pathSuffix": o.PathSuffix,
 12829  		"pathName":   o.PathName,
 12830  		"zone":       zone,
 12831  		"id":         id,
 12832  		"param":      param,
 12833  	}
 12834  
 12835  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12836  	if err != nil {
 12837  		return nil, err
 12838  	}
 12839  	// build request body
 12840  	var body interface{}
 12841  	v, err := o.transformUpdateArgs(id, param)
 12842  	if err != nil {
 12843  		return nil, err
 12844  	}
 12845  	body = v
 12846  
 12847  	// do request
 12848  	data, err := o.Client.Do(ctx, "PUT", url, body)
 12849  	if err != nil {
 12850  		return nil, err
 12851  	}
 12852  
 12853  	// build results
 12854  	results, err := o.transformUpdateResults(data)
 12855  	if err != nil {
 12856  		return nil, err
 12857  	}
 12858  	return results.VPCRouter, nil
 12859  }
 12860  
 12861  // UpdateSettings is API call
 12862  func (o *VPCRouterOp) UpdateSettings(ctx context.Context, zone string, id types.ID, param *VPCRouterUpdateSettingsRequest) (*VPCRouter, error) {
 12863  	// build request URL
 12864  	pathBuildParameter := map[string]interface{}{
 12865  		"rootURL":    SakuraCloudAPIRoot,
 12866  		"pathSuffix": o.PathSuffix,
 12867  		"pathName":   o.PathName,
 12868  		"zone":       zone,
 12869  		"id":         id,
 12870  		"param":      param,
 12871  	}
 12872  
 12873  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12874  	if err != nil {
 12875  		return nil, err
 12876  	}
 12877  	// build request body
 12878  	var body interface{}
 12879  	v, err := o.transformUpdateSettingsArgs(id, param)
 12880  	if err != nil {
 12881  		return nil, err
 12882  	}
 12883  	body = v
 12884  
 12885  	// do request
 12886  	data, err := o.Client.Do(ctx, "PUT", url, body)
 12887  	if err != nil {
 12888  		return nil, err
 12889  	}
 12890  
 12891  	// build results
 12892  	results, err := o.transformUpdateSettingsResults(data)
 12893  	if err != nil {
 12894  		return nil, err
 12895  	}
 12896  	return results.VPCRouter, nil
 12897  }
 12898  
 12899  // Delete is API call
 12900  func (o *VPCRouterOp) Delete(ctx context.Context, zone string, id types.ID) error {
 12901  	// build request URL
 12902  	pathBuildParameter := map[string]interface{}{
 12903  		"rootURL":    SakuraCloudAPIRoot,
 12904  		"pathSuffix": o.PathSuffix,
 12905  		"pathName":   o.PathName,
 12906  		"zone":       zone,
 12907  		"id":         id,
 12908  	}
 12909  
 12910  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 12911  	if err != nil {
 12912  		return err
 12913  	}
 12914  	// build request body
 12915  	var body interface{}
 12916  
 12917  	// do request
 12918  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 12919  	if err != nil {
 12920  		return err
 12921  	}
 12922  
 12923  	// build results
 12924  
 12925  	return nil
 12926  }
 12927  
 12928  // Config is API call
 12929  func (o *VPCRouterOp) Config(ctx context.Context, zone string, id types.ID) error {
 12930  	// build request URL
 12931  	pathBuildParameter := map[string]interface{}{
 12932  		"rootURL":    SakuraCloudAPIRoot,
 12933  		"pathSuffix": o.PathSuffix,
 12934  		"pathName":   o.PathName,
 12935  		"zone":       zone,
 12936  		"id":         id,
 12937  	}
 12938  
 12939  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/config", pathBuildParameter)
 12940  	if err != nil {
 12941  		return err
 12942  	}
 12943  	// build request body
 12944  	var body interface{}
 12945  
 12946  	// do request
 12947  	_, err = o.Client.Do(ctx, "PUT", url, body)
 12948  	if err != nil {
 12949  		return err
 12950  	}
 12951  
 12952  	// build results
 12953  
 12954  	return nil
 12955  }
 12956  
 12957  // Boot is API call
 12958  func (o *VPCRouterOp) Boot(ctx context.Context, zone string, id types.ID) error {
 12959  	// build request URL
 12960  	pathBuildParameter := map[string]interface{}{
 12961  		"rootURL":    SakuraCloudAPIRoot,
 12962  		"pathSuffix": o.PathSuffix,
 12963  		"pathName":   o.PathName,
 12964  		"zone":       zone,
 12965  		"id":         id,
 12966  	}
 12967  
 12968  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
 12969  	if err != nil {
 12970  		return err
 12971  	}
 12972  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 12973  	if err != nil {
 12974  		return err
 12975  	}
 12976  	apiLocker.Lock(lockKey)
 12977  	defer apiLocker.Unlock(lockKey)
 12978  	// build request body
 12979  	var body interface{}
 12980  
 12981  	// do request
 12982  	_, err = o.Client.Do(ctx, "PUT", url, body)
 12983  	if err != nil {
 12984  		return err
 12985  	}
 12986  
 12987  	// build results
 12988  
 12989  	return nil
 12990  }
 12991  
 12992  // Shutdown is API call
 12993  func (o *VPCRouterOp) Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *ShutdownOption) error {
 12994  	// build request URL
 12995  	pathBuildParameter := map[string]interface{}{
 12996  		"rootURL":        SakuraCloudAPIRoot,
 12997  		"pathSuffix":     o.PathSuffix,
 12998  		"pathName":       o.PathName,
 12999  		"zone":           zone,
 13000  		"id":             id,
 13001  		"shutdownOption": shutdownOption,
 13002  	}
 13003  
 13004  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/power", pathBuildParameter)
 13005  	if err != nil {
 13006  		return err
 13007  	}
 13008  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 13009  	if err != nil {
 13010  		return err
 13011  	}
 13012  	apiLocker.Lock(lockKey)
 13013  	defer apiLocker.Unlock(lockKey)
 13014  	// build request body
 13015  	var body interface{}
 13016  	v, err := o.transformShutdownArgs(id, shutdownOption)
 13017  	if err != nil {
 13018  		return err
 13019  	}
 13020  	body = v
 13021  
 13022  	// do request
 13023  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 13024  	if err != nil {
 13025  		return err
 13026  	}
 13027  
 13028  	// build results
 13029  
 13030  	return nil
 13031  }
 13032  
 13033  // Reset is API call
 13034  func (o *VPCRouterOp) Reset(ctx context.Context, zone string, id types.ID) error {
 13035  	// build request URL
 13036  	pathBuildParameter := map[string]interface{}{
 13037  		"rootURL":    SakuraCloudAPIRoot,
 13038  		"pathSuffix": o.PathSuffix,
 13039  		"pathName":   o.PathName,
 13040  		"zone":       zone,
 13041  		"id":         id,
 13042  	}
 13043  
 13044  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/reset", pathBuildParameter)
 13045  	if err != nil {
 13046  		return err
 13047  	}
 13048  	lockKey, err := buildURL("GlobalLock", pathBuildParameter)
 13049  	if err != nil {
 13050  		return err
 13051  	}
 13052  	apiLocker.Lock(lockKey)
 13053  	defer apiLocker.Unlock(lockKey)
 13054  	// build request body
 13055  	var body interface{}
 13056  
 13057  	// do request
 13058  	_, err = o.Client.Do(ctx, "PUT", url, body)
 13059  	if err != nil {
 13060  		return err
 13061  	}
 13062  
 13063  	// build results
 13064  
 13065  	return nil
 13066  }
 13067  
 13068  // ConnectToSwitch is API call
 13069  func (o *VPCRouterOp) ConnectToSwitch(ctx context.Context, zone string, id types.ID, nicIndex int, switchID types.ID) error {
 13070  	// build request URL
 13071  	pathBuildParameter := map[string]interface{}{
 13072  		"rootURL":    SakuraCloudAPIRoot,
 13073  		"pathSuffix": o.PathSuffix,
 13074  		"pathName":   o.PathName,
 13075  		"zone":       zone,
 13076  		"id":         id,
 13077  		"nicIndex":   nicIndex,
 13078  		"switchID":   switchID,
 13079  	}
 13080  
 13081  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/{{.nicIndex}}/to/switch/{{.switchID}}", pathBuildParameter)
 13082  	if err != nil {
 13083  		return err
 13084  	}
 13085  	// build request body
 13086  	var body interface{}
 13087  
 13088  	// do request
 13089  	_, err = o.Client.Do(ctx, "PUT", url, body)
 13090  	if err != nil {
 13091  		return err
 13092  	}
 13093  
 13094  	// build results
 13095  
 13096  	return nil
 13097  }
 13098  
 13099  // DisconnectFromSwitch is API call
 13100  func (o *VPCRouterOp) DisconnectFromSwitch(ctx context.Context, zone string, id types.ID, nicIndex int) error {
 13101  	// build request URL
 13102  	pathBuildParameter := map[string]interface{}{
 13103  		"rootURL":    SakuraCloudAPIRoot,
 13104  		"pathSuffix": o.PathSuffix,
 13105  		"pathName":   o.PathName,
 13106  		"zone":       zone,
 13107  		"id":         id,
 13108  		"nicIndex":   nicIndex,
 13109  	}
 13110  
 13111  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface/{{.nicIndex}}/to/switch", pathBuildParameter)
 13112  	if err != nil {
 13113  		return err
 13114  	}
 13115  	// build request body
 13116  	var body interface{}
 13117  
 13118  	// do request
 13119  	_, err = o.Client.Do(ctx, "DELETE", url, body)
 13120  	if err != nil {
 13121  		return err
 13122  	}
 13123  
 13124  	// build results
 13125  
 13126  	return nil
 13127  }
 13128  
 13129  // MonitorCPU is API call
 13130  func (o *VPCRouterOp) MonitorCPU(ctx context.Context, zone string, id types.ID, condition *MonitorCondition) (*CPUTimeActivity, error) {
 13131  	// build request URL
 13132  	pathBuildParameter := map[string]interface{}{
 13133  		"rootURL":    SakuraCloudAPIRoot,
 13134  		"pathSuffix": o.PathSuffix,
 13135  		"pathName":   o.PathName,
 13136  		"zone":       zone,
 13137  		"id":         id,
 13138  		"condition":  condition,
 13139  	}
 13140  
 13141  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/cpu/monitor", pathBuildParameter)
 13142  	if err != nil {
 13143  		return nil, err
 13144  	}
 13145  	// build request body
 13146  	var body interface{}
 13147  	v, err := o.transformMonitorCPUArgs(id, condition)
 13148  	if err != nil {
 13149  		return nil, err
 13150  	}
 13151  	body = v
 13152  
 13153  	// do request
 13154  	data, err := o.Client.Do(ctx, "GET", url, body)
 13155  	if err != nil {
 13156  		return nil, err
 13157  	}
 13158  
 13159  	// build results
 13160  	results, err := o.transformMonitorCPUResults(data)
 13161  	if err != nil {
 13162  		return nil, err
 13163  	}
 13164  	return results.CPUTimeActivity, nil
 13165  }
 13166  
 13167  // MonitorInterface is API call
 13168  func (o *VPCRouterOp) MonitorInterface(ctx context.Context, zone string, id types.ID, index int, condition *MonitorCondition) (*InterfaceActivity, error) {
 13169  	// build request URL
 13170  	pathBuildParameter := map[string]interface{}{
 13171  		"rootURL":    SakuraCloudAPIRoot,
 13172  		"pathSuffix": o.PathSuffix,
 13173  		"pathName":   o.PathName,
 13174  		"zone":       zone,
 13175  		"id":         id,
 13176  		"index":      index,
 13177  		"condition":  condition,
 13178  	}
 13179  
 13180  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/interface{{if ne .index 0}}/{{.index}}{{end}}/monitor", pathBuildParameter)
 13181  	if err != nil {
 13182  		return nil, err
 13183  	}
 13184  	// build request body
 13185  	var body interface{}
 13186  	v, err := o.transformMonitorInterfaceArgs(id, index, condition)
 13187  	if err != nil {
 13188  		return nil, err
 13189  	}
 13190  	body = v
 13191  
 13192  	// do request
 13193  	data, err := o.Client.Do(ctx, "GET", url, body)
 13194  	if err != nil {
 13195  		return nil, err
 13196  	}
 13197  
 13198  	// build results
 13199  	results, err := o.transformMonitorInterfaceResults(data)
 13200  	if err != nil {
 13201  		return nil, err
 13202  	}
 13203  	return results.InterfaceActivity, nil
 13204  }
 13205  
 13206  // Status is API call
 13207  func (o *VPCRouterOp) Status(ctx context.Context, zone string, id types.ID) (*VPCRouterStatus, error) {
 13208  	// build request URL
 13209  	pathBuildParameter := map[string]interface{}{
 13210  		"rootURL":    SakuraCloudAPIRoot,
 13211  		"pathSuffix": o.PathSuffix,
 13212  		"pathName":   o.PathName,
 13213  		"zone":       zone,
 13214  		"id":         id,
 13215  	}
 13216  
 13217  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/status", pathBuildParameter)
 13218  	if err != nil {
 13219  		return nil, err
 13220  	}
 13221  	// build request body
 13222  	var body interface{}
 13223  
 13224  	// do request
 13225  	data, err := o.Client.Do(ctx, "GET", url, body)
 13226  	if err != nil {
 13227  		return nil, err
 13228  	}
 13229  
 13230  	// build results
 13231  	results, err := o.transformStatusResults(data)
 13232  	if err != nil {
 13233  		return nil, err
 13234  	}
 13235  	return results.VPCRouterStatus, nil
 13236  }
 13237  
 13238  // Logs is API call
 13239  func (o *VPCRouterOp) Logs(ctx context.Context, zone string, id types.ID) (*VPCRouterLog, error) {
 13240  	// build request URL
 13241  	pathBuildParameter := map[string]interface{}{
 13242  		"rootURL":    SakuraCloudAPIRoot,
 13243  		"pathSuffix": o.PathSuffix,
 13244  		"pathName":   o.PathName,
 13245  		"zone":       zone,
 13246  		"id":         id,
 13247  	}
 13248  
 13249  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/download/log/VPNLogs", pathBuildParameter)
 13250  	if err != nil {
 13251  		return nil, err
 13252  	}
 13253  	// build request body
 13254  	var body interface{}
 13255  
 13256  	// do request
 13257  	data, err := o.Client.Do(ctx, "GET", url, body)
 13258  	if err != nil {
 13259  		return nil, err
 13260  	}
 13261  
 13262  	// build results
 13263  	results, err := o.transformLogsResults(data)
 13264  	if err != nil {
 13265  		return nil, err
 13266  	}
 13267  	return results.VPCRouterLog, nil
 13268  }
 13269  
 13270  // Ping is API call
 13271  func (o *VPCRouterOp) Ping(ctx context.Context, zone string, id types.ID, destination string) (*VPCRouterPingResults, error) {
 13272  	// build request URL
 13273  	pathBuildParameter := map[string]interface{}{
 13274  		"rootURL":     SakuraCloudAPIRoot,
 13275  		"pathSuffix":  o.PathSuffix,
 13276  		"pathName":    o.PathName,
 13277  		"zone":        zone,
 13278  		"id":          id,
 13279  		"destination": destination,
 13280  	}
 13281  
 13282  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}/vpcrouter/ping/{{.destination}}", pathBuildParameter)
 13283  	if err != nil {
 13284  		return nil, err
 13285  	}
 13286  	// build request body
 13287  	var body interface{}
 13288  
 13289  	// do request
 13290  	data, err := o.Client.Do(ctx, "POST", url, body)
 13291  	if err != nil {
 13292  		return nil, err
 13293  	}
 13294  
 13295  	// build results
 13296  	results, err := o.transformPingResults(data)
 13297  	if err != nil {
 13298  		return nil, err
 13299  	}
 13300  	return results.VPCRouterPingResults, nil
 13301  }
 13302  
 13303  /*************************************************
 13304  * ZoneOp
 13305  *************************************************/
 13306  
 13307  // ZoneOp implements ZoneAPI interface
 13308  type ZoneOp struct {
 13309  	// Client APICaller
 13310  	Client APICaller
 13311  	// PathSuffix is used when building URL
 13312  	PathSuffix string
 13313  	// PathName is used when building URL
 13314  	PathName string
 13315  }
 13316  
 13317  // NewZoneOp creates new ZoneOp instance
 13318  func NewZoneOp(caller APICaller) ZoneAPI {
 13319  	return GetClientFactoryFunc("Zone")(caller).(ZoneAPI)
 13320  }
 13321  
 13322  // Find is API call
 13323  func (o *ZoneOp) Find(ctx context.Context, conditions *FindCondition) (*ZoneFindResult, error) {
 13324  	// build request URL
 13325  	pathBuildParameter := map[string]interface{}{
 13326  		"rootURL":    SakuraCloudAPIRoot,
 13327  		"pathSuffix": o.PathSuffix,
 13328  		"pathName":   o.PathName,
 13329  		"zone":       APIDefaultZone,
 13330  		"conditions": conditions,
 13331  	}
 13332  
 13333  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}", pathBuildParameter)
 13334  	if err != nil {
 13335  		return nil, err
 13336  	}
 13337  	// build request body
 13338  	var body interface{}
 13339  	v, err := o.transformFindArgs(conditions)
 13340  	if err != nil {
 13341  		return nil, err
 13342  	}
 13343  	body = v
 13344  
 13345  	// do request
 13346  	data, err := o.Client.Do(ctx, "GET", url, body)
 13347  	if err != nil {
 13348  		return nil, err
 13349  	}
 13350  
 13351  	// build results
 13352  	results, err := o.transformFindResults(data)
 13353  	if err != nil {
 13354  		return nil, err
 13355  	}
 13356  	return results, err
 13357  }
 13358  
 13359  // Read is API call
 13360  func (o *ZoneOp) Read(ctx context.Context, id types.ID) (*Zone, error) {
 13361  	// build request URL
 13362  	pathBuildParameter := map[string]interface{}{
 13363  		"rootURL":    SakuraCloudAPIRoot,
 13364  		"pathSuffix": o.PathSuffix,
 13365  		"pathName":   o.PathName,
 13366  		"zone":       APIDefaultZone,
 13367  		"id":         id,
 13368  	}
 13369  
 13370  	url, err := buildURL("{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}/{{.id}}", pathBuildParameter)
 13371  	if err != nil {
 13372  		return nil, err
 13373  	}
 13374  	// build request body
 13375  	var body interface{}
 13376  
 13377  	// do request
 13378  	data, err := o.Client.Do(ctx, "GET", url, body)
 13379  	if err != nil {
 13380  		return nil, err
 13381  	}
 13382  
 13383  	// build results
 13384  	results, err := o.transformReadResults(data)
 13385  	if err != nil {
 13386  		return nil, err
 13387  	}
 13388  	return results.Zone, nil
 13389  }