Help Center/ NAT Gateway/ API Reference/ APIs of Public NAT Gateways/ Public NAT Gateway Tag V3/ Batch Adding or Deleting Tags to or from a Public NAT Gateway
Updated on 2024-03-07 GMT+08:00

Batch Adding or Deleting Tags to or from a Public NAT Gateway

Function

  • This API is used to batch add or delete tags to or from a public NAT gateway.

  • TMS needs to use this API to manage tags of resources in batches.

  • A resource can have up to 10 tags.

Constraints

  • This API is idempotent.

    • If there are duplicate keys in the request body when you add tags, an error is reported.

    • If a tag to be added has the same key as an existing tag, the tag will be added and overwrite the existing one.

    • During tag deletion, if some tags to be deleted do not exist, the operation is considered to be successful by default. The character set of the tags will not be verified. A key can contain up to 128 Unicode characters, and a value can contain up to 255 Unicode characters. When you delete tags, the tags structure cannot be missing, and key cannot be left blank or be an empty string.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/nat_gateways/{nat_gateway_id}/tags/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

nat_gateway_id

Yes

String

Specifies the public NAT gateway ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Specifies the user token. It is a response to the API for obtaining a user token. This API is the only one that does not require authentication. The value of X-Subject-Token in the response header is the token.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

tags

Yes

Array of PublicTags objects

Specifies the tag list. For details, see the Tags field description.

action

Yes

String

Specifies the operation to be performed. The value can only be create or delete.

Table 4 PublicTags

Parameter

Mandatory

Type

Description

key

Yes

String

Specifies the tag key. A key can contain up to 128 Unicode characters. key cannot be left blank. A key cannot contain ASCII characters (0–31 decimal) nor the following characters: =*<>,|/

value

Yes

String

Specifies the value. Each value can contain up to 255 Unicode characters. If value is specified, tags are deleted by key and value. If value is not specified, tags are deleted by key. value can be an empty string. A value cannot contain ASCII characters (0–31 decimal) nor the following characters: =*<>,|/

Response Parameters

None

Example Requests

  • Adding tags to a public NAT gateway (Setting action to create and adding the following two tags: key1,value1 and key2,value2)

    POST  https://{Endpoint}/v3/9ad601814ac94c80bf7bb9073ded66fc/nat_gateways/fe1a4cf0-27fe-4b97-a9b1-2c67c127f0e0/tags/action
    
    {
      "action" : "create",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }
  • Deleting tags from a public NAT gateway (Setting action to delete and deleting the following two tags: key1,value1 and key2,value2)

    {
      "action" : "delete",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }

Example Responses

None

SDK Sample Code

The SDK sample code is as follows.

  • Adding tags to a public NAT gateway (Setting action to create and adding the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.nat.v2.region.NatRegion;
    import com.huaweicloud.sdk.nat.v2.*;
    import com.huaweicloud.sdk.nat.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class BatchCreateDeleteNatGatewayTagSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeleteNatGatewayTagRequest request = new BatchCreateDeleteNatGatewayTagRequest();
            BatchCreateDeleteNatTagsRequestBody body = new BatchCreateDeleteNatTagsRequestBody();
            List<PublicTags> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new PublicTags()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new PublicTags()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withAction("create");
            body.withTags(listbodyTags);
            request.withBody(body);
            try {
                BatchCreateDeleteNatGatewayTagResponse response = client.batchCreateDeleteNatGatewayTag(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Deleting tags from a public NAT gateway (Setting action to delete and deleting the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.nat.v2.region.NatRegion;
    import com.huaweicloud.sdk.nat.v2.*;
    import com.huaweicloud.sdk.nat.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class BatchCreateDeleteNatGatewayTagSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeleteNatGatewayTagRequest request = new BatchCreateDeleteNatGatewayTagRequest();
            BatchCreateDeleteNatTagsRequestBody body = new BatchCreateDeleteNatTagsRequestBody();
            List<PublicTags> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new PublicTags()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new PublicTags()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withAction("delete");
            body.withTags(listbodyTags);
            request.withBody(body);
            try {
                BatchCreateDeleteNatGatewayTagResponse response = client.batchCreateDeleteNatGatewayTag(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Adding tags to a public NAT gateway (Setting action to create and adding the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdknat.v2.region.nat_region import NatRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdknat.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeleteNatGatewayTagRequest()
            listTagsbody = [
                PublicTags(
                    key="key1",
                    value="value1"
                ),
                PublicTags(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchCreateDeleteNatTagsRequestBody(
                action="create",
                tags=listTagsbody
            )
            response = client.batch_create_delete_nat_gateway_tag(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Deleting tags from a public NAT gateway (Setting action to delete and deleting the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdknat.v2.region.nat_region import NatRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdknat.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeleteNatGatewayTagRequest()
            listTagsbody = [
                PublicTags(
                    key="key1",
                    value="value1"
                ),
                PublicTags(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchCreateDeleteNatTagsRequestBody(
                action="delete",
                tags=listTagsbody
            )
            response = client.batch_create_delete_nat_gateway_tag(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Adding tags to a public NAT gateway (Setting action to create and adding the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeleteNatGatewayTagRequest{}
    	var listTagsbody = []model.PublicTags{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchCreateDeleteNatTagsRequestBody{
    		Action: "create",
    		Tags: listTagsbody,
    	}
    	response, err := client.BatchCreateDeleteNatGatewayTag(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Deleting tags from a public NAT gateway (Setting action to delete and deleting the following two tags: key1,value1 and key2,value2)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeleteNatGatewayTagRequest{}
    	var listTagsbody = []model.PublicTags{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchCreateDeleteNatTagsRequestBody{
    		Action: "delete",
    		Tags: listTagsbody,
    	}
    	response, err := client.BatchCreateDeleteNatGatewayTag(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

204

Tags added or deleted.

Error Codes

See Error Codes.