Help Center/ NAT Gateway/ API Reference/ APIs for Private NAT Gateways/ Private NAT Gateway Tags/ Batch Adding or Deleting Tags to or from a Private NAT Gateway
Updated on 2025-07-04 GMT+08:00

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

Function

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

  • TMS uses this API to batch manage tags of a private NAT gateway.

  • A private NAT gateway can have up to 20 tags.

Constraints

This API is idempotent.

  • If the request body contains duplicate keys, an error is reported.

  • During tag creation, duplicate keys are not allowed. If a key already exists in the database, its value will be overwritten by the new duplicate key.

  • 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.

  • The tags structure cannot be missing during deletion. The key cannot be left blank or be an empty string.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/private-nat-gateways/{resource_id}/tags/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

resource_id

Yes

String

Specifies the private 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 value.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

action

Yes

String

Specifies the operation.

The value can be one of the following:

  • create

  • delete

tags

Yes

Array of Tag objects

Specifies the tag list.

Table 4 Tag

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.

value

Yes

String

Specifies the tag value. Each value can contain up to 255 Unicode characters.

Response Parameters

Status code: 204

Tags added or deleted.

None

Example Requests

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

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/private-nat-gateways/3320166e-b937-40cc-a35c-02cd3f2b3ee2/tags/action
    
    {
      "action" : "create",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }
  • Deleting tags from a private NAT gateway (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/private-nat-gateways/3320166e-b937-40cc-a35c-02cd3f2b3ee2/tags/action
    
    {
      "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 private 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
    63
    64
    65
    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 BatchCreateDeletePrivateNatTagsSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeletePrivateNatTagsRequest request = new BatchCreateDeletePrivateNatTagsRequest();
            request.withResourceId("{resource_id}");
            BatchOperateResourceTagsRequestBody body = new BatchOperateResourceTagsRequestBody();
            List<Tag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new Tag()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new Tag()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withTags(listbodyTags);
            body.withAction(BatchOperateResourceTagsRequestBody.ActionEnum.fromValue("create"));
            request.withBody(body);
            try {
                BatchCreateDeletePrivateNatTagsResponse response = client.batchCreateDeletePrivateNatTags(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 private 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
    63
    64
    65
    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 BatchCreateDeletePrivateNatTagsSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeletePrivateNatTagsRequest request = new BatchCreateDeletePrivateNatTagsRequest();
            request.withResourceId("{resource_id}");
            BatchOperateResourceTagsRequestBody body = new BatchOperateResourceTagsRequestBody();
            List<Tag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new Tag()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new Tag()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withTags(listbodyTags);
            body.withAction(BatchOperateResourceTagsRequestBody.ActionEnum.fromValue("delete"));
            request.withBody(body);
            try {
                BatchCreateDeletePrivateNatTagsResponse response = client.batchCreateDeletePrivateNatTags(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 private 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
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeletePrivateNatTagsRequest()
            request.resource_id = "{resource_id}"
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="create"
            )
            response = client.batch_create_delete_private_nat_tags(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 private 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
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeletePrivateNatTagsRequest()
            request.resource_id = "{resource_id}"
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="delete"
            )
            response = client.batch_create_delete_private_nat_tags(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 private 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
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeletePrivateNatTagsRequest{}
    	request.ResourceId = "{resource_id}"
    	var listTagsbody = []model.Tag{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchOperateResourceTagsRequestBody{
    		Tags: listTagsbody,
    		Action: model.GetBatchOperateResourceTagsRequestBodyActionEnum().CREATE,
    	}
    	response, err := client.BatchCreateDeletePrivateNatTags(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Deleting tags from a private 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
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeletePrivateNatTagsRequest{}
    	request.ResourceId = "{resource_id}"
    	var listTagsbody = []model.Tag{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchOperateResourceTagsRequestBody{
    		Tags: listTagsbody,
    		Action: model.GetBatchOperateResourceTagsRequestBodyActionEnum().DELETE,
    	}
    	response, err := client.BatchCreateDeletePrivateNatTags(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.