Help Center/ NAT Gateway/ API Reference/ APIs for Private NAT Gateways/ Transit IP Address Tags/ Batch Adding Tags to or Deleting Tags from a Transit IP Address
Updated on 2024-03-28 GMT+08:00

Batch Adding Tags to or Deleting Tags from a Transit IP Address

Function

  • This API is used to batch add tags to or delete tags from a specified transit IP address.

  • TMS needs to use this API to batch manage tags of a specified transit IP address.

  • A transit IP address can have up to 10 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}/transit-ips/{resource_id}/tags/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

Minimum: 1

Maximum: 32

resource_id

Yes

String

Specifies the ID of the transit IP address.

Minimum: 36

Maximum: 36

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

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

Minimum: 1

Maximum: 10240

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

action

Yes

String

Specifies the operation to perform. The value can be: create delete

Enumeration values:

  • create

  • delete

tags

Yes

Array of Tag objects

Specifies the tags.

Array Length: 1 - 10

Table 4 Tag

Parameter

Mandatory

Type

Description

key

Yes

String

Specifies any tag that is not included. Each tag can contain a maximum of 10 keys, and each key can contain a maximum of 10 values. The structure body cannot be missing, and the key cannot be left blank or set to an empty string. Keys must be unique and values of a key must be unique. Resources not identified by different keys are in OR relationship, and values in one tag are in OR relationship. If no filtering condition is specified, full data is returned.

Minimum: 1

Maximum: 128

value

Yes

String

Specifies the request ID.

Minimum: 0

Maximum: 255

Response Parameters

None

Example Requests

  • Adding tags to a transit IP address (Setting action to create and adding the following two tags: key1, value1 and key2, value2)

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/transit-ips/56121618-fb0a-4a51-aff0-e2eb9cba4c73/tags/action
    
    {
      "action" : "create",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }
  • Deleting tags of a transit IP address (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/transit-ips/56121618-fb0a-4a51-aff0-e2eb9cba4c73/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 transit IP address (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 BatchCreateDeleteTransitIpTagsSolution {
    
        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();
            BatchCreateDeleteTransitIpTagsRequest request = new BatchCreateDeleteTransitIpTagsRequest();
            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 {
                BatchCreateDeleteTransitIpTagsResponse response = client.batchCreateDeleteTransitIpTags(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 of a transit IP address (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 BatchCreateDeleteTransitIpTagsSolution {
    
        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();
            BatchCreateDeleteTransitIpTagsRequest request = new BatchCreateDeleteTransitIpTagsRequest();
            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 {
                BatchCreateDeleteTransitIpTagsResponse response = client.batchCreateDeleteTransitIpTags(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 transit IP address (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 = BatchCreateDeleteTransitIpTagsRequest()
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="create"
            )
            response = client.batch_create_delete_transit_ip_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 of a transit IP address (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 = BatchCreateDeleteTransitIpTagsRequest()
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="delete"
            )
            response = client.batch_create_delete_transit_ip_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 transit IP address (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.BatchCreateDeleteTransitIpTagsRequest{}
    	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.BatchCreateDeleteTransitIpTags(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Deleting tags of a transit IP address (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.BatchCreateDeleteTransitIpTagsRequest{}
    	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.BatchCreateDeleteTransitIpTags(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.