Updated on 2025-12-04 GMT+08:00

Creating a Transit Subnet

Function

This API is used to create a transit subnet.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/private-nat/transit-subnets

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

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

transit_subnet

Yes

CreateTransitSubnetOption object

Specifies the request body for creating a transit subnet.

Table 4 CreateTransitSubnetOption

Parameter

Mandatory

Type

Description

name

Yes

String

Specifies the transit subnet name. The name can contain only digits, letters, underscores (_), and hyphens (-).

description

No

String

Provides supplementary information about the transit subnet. The description can contain up to 255 characters and cannot contain angle brackets (<>).

virsubnet_id

Yes

String

Specifies the transit subnet ID.

virsubnet_project_id

Yes

String

Specifies the ID of the project to which the transit subnet belongs. Only digits and lowercase letters are supported.

tags

No

Array of Tag objects

Specifies the tags.

Table 5 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: 201

Table 6 Response body parameters

Parameter

Type

Description

transit_subnet

TransitSubnet object

Specifies the response body of the transit subnet.

request_id

String

Specifies the request ID.

Table 7 TransitSubnet

Parameter

Type

Description

id

String

Specifies the transit subnet ID.

name

String

Specifies the transit subnet name.

description

String

Provides supplementary information about the transit subnet.

virsubnet_project_id

String

Specifies the ID of the project to which the transit subnet belongs.

project_id

String

Specifies the project ID.

vpc_id

String

Specifies the ID of the VPC to which the transit subnet belongs.

virsubnet_id

String

Specifies the transit subnet ID.

cidr

String

Specifies the CIDR block of the transit subnet.

type

String

Specifies the transit subnet type. The value can only be VPC.

status

String

Specifies the transit subnet status.

The value can be:

  • ACTIVE: The transit subnet is active.

  • INACTIVE: The transit subnet is unavailable.

ip_count

Integer

Specifies the number of IP addresses that has been assigned from the transit subnet.

created_at

String

Specifies when the transit subnet was assigned. It is a UTC time in yyyy-mm-ddThh:mm:ssZ format.

updated_at

String

Specifies when the transit subnet was updated. It is a UTC time in yyyy-mm-ddThh:mm:ssZ format.

tags

Array of Tag objects

Specifies the tag list.

Table 8 Tag

Parameter

Type

Description

key

String

Specifies the tag key. A key can contain up to 128 Unicode characters. key cannot be left blank.

value

String

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

Example Requests

Creating a transit subnet

POST https://{Endpoint}/v3/70505c941b9b4dfd82fd351932328a2f/private-nat/transit-subnets

{
  "transit_subnet" : {
    "name" : "transit-subnet_t1",
    "description" : "transit-subnet-description",
    "virsubnet_id" : "2759da7b-8015-404c-ae0a-a389007b0e2a",
    "virsubnet_project_id" : "aea5011c0bc2454d8645a560345da810",
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    } ]
  }
}

Example Responses

Status code: 201

The transit subnet created.

{
  "request_id" : "9882046a9b96f1405472e36d797e33dc",
  "transit_subnet" : {
    "id" : "48b55781-306c-4a90-9cc0-d376337fae4f",
    "name" : "transit-subnet_t1",
    "description" : "transit-subnet-description",
    "virsubnet_project_id" : "aea5011c0bc2454d8645a560345da810",
    "project_id" : "aea5011c0bc2454d8645a560345da810",
    "vpc_id" : "f9169a4f-5f0a-41ce-b2a3-834c15b038c2",
    "virsubnet_id" : "2759da7b-8015-404c-ae0a-a389007b0e2a",
    "cidr" : "192.168.1.0/24",
    "type" : "VPC",
    "status" : "ACTIVE",
    "ip_count" : 0,
    "created_at" : "2021-07-01T09:15:54Z",
    "updated_at" : "2021-04-01T09:15:54Z",
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    } ]
  }
}

SDK Sample Code

The SDK sample code is as follows.

Creating a transit subnet

 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
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 CreateTransitSubnetSolution {

    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();
        CreateTransitSubnetRequest request = new CreateTransitSubnetRequest();
        CreateTransitSubnetRequestBody body = new CreateTransitSubnetRequestBody();
        List<Tag> listTransitSubnetTags = new ArrayList<>();
        listTransitSubnetTags.add(
            new Tag()
                .withKey("key1")
                .withValue("value1")
        );
        CreateTransitSubnetOption transitSubnetbody = new CreateTransitSubnetOption();
        transitSubnetbody.withName("transit-subnet_t1")
            .withDescription("transit-subnet-description")
            .withVirsubnetId("2759da7b-8015-404c-ae0a-a389007b0e2a")
            .withVirsubnetProjectId("aea5011c0bc2454d8645a560345da810")
            .withTags(listTransitSubnetTags);
        body.withTransitSubnet(transitSubnetbody);
        request.withBody(body);
        try {
            CreateTransitSubnetResponse response = client.createTransitSubnet(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());
        }
    }
}

Creating a transit subnet

 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
# 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 = CreateTransitSubnetRequest()
        listTagsTransitSubnet = [
            Tag(
                key="key1",
                value="value1"
            )
        ]
        transitSubnetbody = CreateTransitSubnetOption(
            name="transit-subnet_t1",
            description="transit-subnet-description",
            virsubnet_id="2759da7b-8015-404c-ae0a-a389007b0e2a",
            virsubnet_project_id="aea5011c0bc2454d8645a560345da810",
            tags=listTagsTransitSubnet
        )
        request.body = CreateTransitSubnetRequestBody(
            transit_subnet=transitSubnetbody
        )
        response = client.create_transit_subnet(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Creating a transit subnet

 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
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.CreateTransitSubnetRequest{}
	var listTagsTransitSubnet = []model.Tag{
        {
            Key: "key1",
            Value: "value1",
        },
    }
	descriptionTransitSubnet:= "transit-subnet-description"
	transitSubnetbody := &model.CreateTransitSubnetOption{
		Name: "transit-subnet_t1",
		Description: &descriptionTransitSubnet,
		VirsubnetId: "2759da7b-8015-404c-ae0a-a389007b0e2a",
		VirsubnetProjectId: "aea5011c0bc2454d8645a560345da810",
		Tags: &listTagsTransitSubnet,
	}
	request.Body = &model.CreateTransitSubnetRequestBody{
		TransitSubnet: transitSubnetbody,
	}
	response, err := client.CreateTransitSubnet(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

201

The transit subnet created.

400

Bad Request

409

Conflict

Error Codes

See Error Codes.