[Документация Yandex Cloud](../../../index.md) > [Monium](../../index.md) > Справочник API > Метрики > gRPC (англ.) > Обзор

# Обзор

Методы справочника API сгруппированы по ресурсам. Чтобы выполнить операцию над ресурсом, сделайте RPC-вызов. Подробнее в документации [Концепции API Yandex Cloud](../../../api-design-guide/index.md).

Сервис|Описание|Примеры использования
------|--------|--------
[DashboardService](DashboardService.md) | Набор методов для управления дашбордами. |[grpcurl](../../operations/dashboard/api-examples.md)

## Обработка ответов мутирующих операций {#mutating-operations}

Все операции, которые изменяют состояние ресурса, имеют асинхронную сигнатуру. При вызове таких операций сервер возвращает объект [Operation](https://github.com/yandex-cloud/cloudapi/blob/master/yandex/cloud/operation/operation.proto).

Объект `Operation` содержит информацию об операции: статус, идентификатор, дату создания и др. Обращаясь к этому объекту, можно отслеживать статус операции. Статус операции отображается в поле `done`. Когда операция завершается, поле `done` принимает значение `true`. На данный момент все операции являются синхронными и возвращают `done=true` или ошибку.

Если во время выполнения асинхронной операции возникла ошибка, сервер отменяет все запущенные процедуры. В объект `Operation` добавляется поле `error` с описанием ошибки.

Когда в ответ на запрос возвращается объект `Operation`, необходимо:
* проверить, что поле `done=true`;
* проверить, что в поле `error` нет ошибок;
* получить ответ из поля `response`.

Пример ошибки:
```text
code: 6
message: "ALREADY_EXISTS: Name must be uniq in parentId"
```

## Обработка ошибок {#error-handling}

Если возникает ошибка, Monium Metrics API возвращает gRPC `status != OK`. В теле ответа содержится подробное описание ошибки в следующем формате:

```text
code: <number> код ошибки
message: <string>  текст ошибки
```

Пример сообщения об ошибке:
```text
code: 6
message: "ALREADY_EXISTS: Name must be uniq in parentId"
```

На данный момент нет фиксированного списка кодов ошибок, поэтому поле `code` зарезервировано для использования в следующих версиях Monium Metrics.

{% note tip %}

Рекомендуем логировать сообщения об ошибках. Так технической поддержке будет проще понять, почему возникла проблема.

{% endnote %}

### Конфликты при обновлении объектов {#conflicts-resolution}

Чтобы разрешать конфликты при обновлении объектов, используется необязательное поле `etag`. Его можно передавать в мутирующих операциях и получать с помощью метода `Get`. Объект изменится, если во время выполнения запроса не был изменен другим параллельным запросом и `etag` в операции совпадает со значением сервера. Если возникла ошибка, необходимо получить новый `etag` и повторить операцию.

`etag` — опциональное поле. Если оно не передано, применяется политика `last-write-wins`.