[Документация Yandex Cloud](../../index.md) > [Концепции API Yandex Cloud](../index.md) > Ресурсы > Идентификация ресурсов

# Идентификация ресурсов

Каждый ресурс в API Yandex Cloud имеет свой уникальный идентификатор. Идентификаторы генерируются на стороне сервиса и представляют собой строку, состоящую из символов латинского алфавита и цифр.

Идентификаторы необходимо передавать в запросах к API при обращении к ресурсам.

Пример gRPC-описания метода [Get](https://github.com/yandex-cloud/cloudapi/blob/master/yandex/cloud/compute/v1/disk_service.proto) для получения диска:

```protobuf
 rpc Get (GetDiskRequest) returns (Disk) {
   option (google.api.http) = {
     get: "/compute/v1/disks/{disk_id}"
   };
 }

 message GetDiskRequest {
   // Идентификатор запрашиваемого диска.
   string disk_id = 1;
 }
```

В REST для каждого ресурса определен свой уникальный URL, который формируется по схеме:

```http
https://<домен>/<сервис>/<версия API>/<категория ресурса>/<идентификатор ресурса>
```

Пример запроса диска в REST:
```
 GET https://compute.api.yandexcloud.kz/compute/v1/disks/e0m97h0gbq0foeuis03
```

Как видно из примера, URL ресурсов идентифицируется связкой <q>категория ресурса и идентификатор ресурса</q>.

Категория ресурса определяет тип ресурса. Например: `disks` — категория дисков; `instances` — категория [виртуальных машин](../../glossary/vm.md); `images` — категория образов.

{% note info %}

Не следует путать категорию ресурса с понятием коллекция в REST. Категории не являются самостоятельными ресурсами, и вы не можете управлять ими (создавать, изменять или запрашивать информацию). Категории носят служебный характер — они используются в URL ресурсов для маршрутизации запросов на стороне сервиса.

{% endnote %}


## Идентификаторы вложенных ресурсов {#nested-resources-identification}

Некоторые ресурсы в API являются вложенными, то есть создаются в контексте других ресурсов. Например, базы данных создаются в кластерах. При обращении к таким ресурсам всегда следует указывать два параметра:

- Идентификатор родительского ресурса. В примере с базами данных родительским ресурсом является кластер.
- Имя вложенного ресурса. В нашем примере вложенным ресурсом является база данных.

Имя вложенного ресурса задается пользователем и должно быть уникальным в рамках родительского ресурса. Например, в одном кластере не могут быть созданы две базы данных с одинаковыми именами.

Пример gRPC-описания метода [Get](https://github.com/yandex-cloud/cloudapi/blob/master/yandex/cloud/mdb/postgresql/v1/database_service.proto) для получения ресурса базы данных:
```protobuf
 rpc Get (GetDatabaseRequest) returns (Database) {
   option (google.api.http) = {
     get: "/managed-postgresql/v1/clusters/{cluster_id}/databases/{database_name}"
   };
 }
 message GetDatabaseRequest {
   // Идентификатор кластера, которому принадлежит база данных.
   // Обязательное поле.
   string cluster_id = 1;

   // Имя базы данных.
   // Обязательное поле.
   string database_name = 2;
 }
```

В поле `database_name` допускается использовать буквы, цифры, символ подчеркивания и дефис, но не более 63 символов.

В REST уникальный URI вложенных ресурсов имеет иерархическую структуру:
```
/<категория родительского ресурса>/<идентификатор родительского ресурса>/<категория вложенного ресурса>/<идентификатор вложенного ресурса>
```
Пример REST запроса для получения базы данных:
```
 GET https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/24f17h0gfqf7oeuis2f/databases/db-testing
```
В примере:
 - `clusters` — категория родительского ресурса;
 - `24f17h0gfqf7oeuis2f` — идентификатор родительского ресурса;
 - `databases` — категория вложенного ресурса;
 - `db-testing` — идентификатор вложенного ресурса.


#### Полезные ссылки {#see-also}
- [Репозиторий API Yandex Cloud](https://github.com/yandex-cloud/cloudapi) — ссылка на .proto-спецификации API;
- [Документация Yandex Resource Manager](../../resource-manager/concepts/resources-hierarchy.md) — ссылка на раздел <q>Иерархия ресурсов Yandex Cloud</q>.