# Файлы .proto (/ru/docs/specs/proto-files)

Файл `.proto` описывает сервис gRPC: его методы и сообщения, которые они принимают и возвращают. Держите его в рабочем
пространстве, и [запросы gRPC](/docs/requests/grpc) будут использовать его для создания и чтения сообщений, не
обращаясь к серверу. Страница «Спецификации» показывает файлы `.proto` рядом с документами OpenAPI, со своим
редактором и своей структурой.

В примере Alpenglow есть один такой файл, `inventory.proto`, с сервисом `alpenglow.inventory.v1.Inventory`.

<Shot id="specs-proto" alt="Файл inventory.proto, открытый на странице «Спецификации»: слева исходный текст, справа сервис Inventory с методами ListWarehouses, WatchStock и Reserve, у каждого кнопка с плюсом, а ниже его сообщения" />

## Добавление файла [#adding-a-file]

В боковой панели «Спецификации» нажмите **+** в заголовке **Спецификации**:

- **Новый proto-файл** создаёт `specs/service.proto` с небольшим примером сервиса `Greeter`, который нужно заменить
  своим.
- **Добавить proto-файл…** копирует файл `.proto` с вашего Mac в папку `specs`. Если он импортирует другие файлы,
  скопируйте их в `specs` тоже. Стандартные типы Google (`google/protobuf/timestamp.proto` и другие) встроены.

Файлы перечислены в боковой панели в разделе **Proto-файлы**. Щёлкните файл правой кнопкой, чтобы выбрать
**Показать в Finder** и **Удалить…**. Удаление сначала спрашивает разрешения и перемещает файл в Корзину; запросам gRPC, которые его
использовали, после этого понадобится другой файл или рефлексия сервера.

## Правка [#editing]

Щёлкните файл, чтобы открыть его. Исходный текст слева, с подсветкой. Панель над ним показывает файл, **Protocol
Buffers** и **Проблем нет** либо первую проблему, найденную парсером, например `inventory.proto:12: expected “;”`.

Справа структура показывает, что объявлено в файле, и следует за редактором по мере ввода:

- Каждый **Сервис** с его методами. У каждого метода указан вид (`unary`, `server streaming` и так далее) и его входные
  и выходные сообщения.
- **Сообщения** с их полями и типами.
- **Перечисления**.

Если файл не удаётся разобрать, показывается **Структура появится, когда файл удастся разобрать.**

Echolot сохраняет файл вскоре после каждого изменения, а также когда вы открываете другой файл или уходите со
страницы. Если записать его не удаётся, **Не удалось сохранить proto-файл** предлагает **Повторить**,
**Сохранить копию…**, **Отменить изменения** и **Продолжить правку**, как для [спецификаций](/docs/specs/editing#saving); ваши
правки остаются в редакторе, пока не сохранены.

На странице «Спецификации» открыт один файл за раз: файл `.proto` или спецификация OpenAPI. Открытие одного сохраняет
другой и закрывает его.

## Запросы из методов [#requests-from-methods]

Нажмите **+** рядом с методом в структуре, чтобы создать для него запрос gRPC. Запрос использует этот файл `.proto`,
вызывает этот сервис и метод и начинается с сообщения, в котором у каждого поля значение-пример. Укажите в его URL свой
сервер и отправьте. Об отправке, методах с потоками и получении методов из рефлексии сервера вместо файла см.
[gRPC](/docs/requests/grpc).

## Из командной строки [#from-the-command-line]

`echolot grpc describe --proto api.proto` перечисляет сервисы, методы и поля файла, а `echolot grpc call` вызывает
метод. См. [echolot grpc](/docs/cli/grpc).
