Help Center/ Elastic Volume Service/ API Reference/ API/ Disk Management/ Unsubscribing from Yearly/Monthly EVS Disks
Updated on 2025-08-20 GMT+08:00

Unsubscribing from Yearly/Monthly EVS Disks

Function

This API is used to unsubscribe from yearly/monthly EVS disks. It has the following constraints:

  • It cannot be used to unsubscribe from system disks and bootable disks. They must be unsubscribed from together with their servers.

  • A maximum of 60 disks can be unsubscribed from at the same time using this API.

Calling Method

For details, see Calling APIs.

URI

POST /v2/{project_id}/cloudvolumes/unsubscribe

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Definition

The project ID. For details about how to obtain the project ID, see Obtaining a Project ID.

Constraints

N/A

Range

N/A

Default Value

N/A

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Definition

The user token. You can obtain it by calling the IAM API. The value of X-Subject-Token in the response header is the user token.

Constraints

N/A

Range

N/A

Default Value

N/A

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

volume_ids

Yes

Array of strings

Definition

The yearly/monthly disks to be unsubscribed from.

You can obtain the disk IDs on the disk list page of the EVS console.

Constraints

N/A

Range

N/A

Default Value

N/A

Response Parameters

Status code: 202

Table 4 Response body parameters

Parameter

Type

Description

[items]

Array of UnsubscribeVolumeResponseBody objects

Definition

The response body of unsubscribing from a yearly/monthly disk.

Range

N/A

Table 5 UnsubscribeVolumeResponseBody

Parameter

Type

Description

results

Array of UnsubscribeVolume objects

Definition

The unsubscription result.

Range

N/A

Table 6 UnsubscribeVolume

Parameter

Type

Description

volume_id

String

Definition

The disk ID.

Range

N/A

order_id

String

Definition

The unsubscription order ID. This field does not appear if the disk is unsubscribed from because it is expired.

Range

N/A

result

String

Definition

The unsubscription result.

Range

SUCCESS or FAIL

fail_reason

String

Definition

The returned failure cause if result is FAIL. This field does not appear if result is SUCCESS.

Range

N/A

Status code: 400

Table 7 Response body parameters

Parameter

Type

Description

[items]

Array of strings

Example Requests

Unsubscribing from yearly/monthly disks whose IDs are 8739ca48-1b86-46aa-9059-38623ee1346c and fc7d594d-e78f-49a8-ab6e-90ee6b560cb0

POST /v2/{project_id}/cloudvolumes/unsubscribe

{
  "volume_ids" : [ "fc7d594d-e78f-49a8-ab6e-90ee6b560cb0", "8739ca48-1b86-46aa-9059-38623ee1346c" ]
}

Example Responses

Status code: 202

The request is responded.

{
  "results" : [ {
    "volume_id" : "8739ca48-1b86-46aa-9059-38623ee1346c",
    "order_id" : "CS23021116385NAOR",
    "result" : "SUCCESS"
  }, {
    "volume_id" : "fc7d594d-e78f-49a8-ab6e-90ee6b560cb0",
    "result" : "FAIL",
    "fail_reason" : "INTERNAL ERROR, please contact customer service"
  } ]
}

Status code: 400

The disk ID transferred to the request body is incorrect and needs to be checked.

{
  "error" : {
    "message" : "Volume id: [xxx, xxx]is not found in project: xxxx,please check.",
    "code" : "EVS.2203"
  }
}

SDK Sample Code

The SDK sample code is as follows.

Java

Unsubscribing from yearly/monthly disks whose IDs are 8739ca48-1b86-46aa-9059-38623ee1346c and fc7d594d-e78f-49a8-ab6e-90ee6b560cb0

 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
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.evs.v2.region.EvsRegion;
import com.huaweicloud.sdk.evs.v2.*;
import com.huaweicloud.sdk.evs.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class UnsubscribePostpaidVolumeSolution {

    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);

        EvsClient client = EvsClient.newBuilder()
                .withCredential(auth)
                .withRegion(EvsRegion.valueOf("<YOUR REGION>"))
                .build();
        UnsubscribePostpaidVolumeRequest request = new UnsubscribePostpaidVolumeRequest();
        UnsubscribeVolumeRequestBody body = new UnsubscribeVolumeRequestBody();
        List<String> listbodyVolumeIds = new ArrayList<>();
        listbodyVolumeIds.add("fc7d594d-e78f-49a8-ab6e-90ee6b560cb0");
        listbodyVolumeIds.add("8739ca48-1b86-46aa-9059-38623ee1346c");
        body.withVolumeIds(listbodyVolumeIds);
        request.withBody(body);
        try {
            UnsubscribePostpaidVolumeResponse response = client.unsubscribePostpaidVolume(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());
        }
    }
}

Python

Unsubscribing from yearly/monthly disks whose IDs are 8739ca48-1b86-46aa-9059-38623ee1346c and fc7d594d-e78f-49a8-ab6e-90ee6b560cb0

 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
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkevs.v2.region.evs_region import EvsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkevs.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 = EvsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(EvsRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = UnsubscribePostpaidVolumeRequest()
        listVolumeIdsbody = [
            "fc7d594d-e78f-49a8-ab6e-90ee6b560cb0",
            "8739ca48-1b86-46aa-9059-38623ee1346c"
        ]
        request.body = UnsubscribeVolumeRequestBody(
            volume_ids=listVolumeIdsbody
        )
        response = client.unsubscribe_postpaid_volume(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Go

Unsubscribing from yearly/monthly disks whose IDs are 8739ca48-1b86-46aa-9059-38623ee1346c and fc7d594d-e78f-49a8-ab6e-90ee6b560cb0

 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
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    evs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/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 := evs.NewEvsClient(
        evs.EvsClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.UnsubscribePostpaidVolumeRequest{}
	var listVolumeIdsbody = []string{
        "fc7d594d-e78f-49a8-ab6e-90ee6b560cb0",
	    "8739ca48-1b86-46aa-9059-38623ee1346c",
    }
	request.Body = &model.UnsubscribeVolumeRequestBody{
		VolumeIds: listVolumeIdsbody,
	}
	response, err := client.UnsubscribePostpaidVolume(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

More

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

202

The request is responded.

400

The disk ID transferred to the request body is incorrect and needs to be checked.

Error Codes

See Error Codes.