Разрешить другим программам считывать ваши данные
API Studio: публикация каждого экрана по отдельности, выдача ключа, привязка его к адресу, а также та же публикация, что и на сервере MCP для агента ИИ.
Рано или поздно ваши данные понадобятся кому-то за пределами TRANXACT: инструменту отчетности, системе партнера, веб-сайту, которому нужен прайс-лист, или ИИ-агенту, которому задали вопрос о вашем бизнесе. В API Studio, в разделе «Платформа», вы сами определяете, что именно вам разрешено использовать — по одному экрану за раз, по одной колонке за раз.
Пока кто-то это не опубликует, ничто не будет доступно извне. Нет настройки, которая бы всё открывала, и нет ключа, который бы ко всему вёл. У совершенно нового развертывания вообще нет API-интерфейса, и это правильная отправная точка, а не что-то, что нужно просто включить.
Четыре решения, в порядке очередности
| Что | Что она решает | Кто обычно это делает? |
|---|---|---|
| Экспозиция | Этот единственный экран может вообще покинуть компанию — какие именно его столбцы, какие строки и можно ли будет что-либо записать обратно. | Кто бы ни владел данными |
| Клиент | Эта программа существует, как она называется, кому позвонить по этому поводу и от имени какого из ваших пользователей она работает. | Кто бы ни занимался интеграцией |
| грант | Чтобы этот клиент мог достичь такого уровня известности, используя эти глаголы. | Кто бы ни занимался интеграцией |
| Допустимый адрес | Источником ключа может быть браузер, хост, адрес сервера или сеть. | Кто бы ни занимался интеграцией |
Платформа предоставляет три роли для этой задачи и намеренно разделяет их. Издатель API решает, что можно удалить, и не может выдавать ключи. Регистратор API выдает ключи и не может создавать уязвимости. Рецензент API читает все и ничего не меняет. При наличии одного человека, публикация таблицы заработной платы и выдача ключа, позволяющего ее прочитать, представляет собой полный, незаметный путь экспорта, в котором каждый шаг выглядит как обычное административное изменение.
Публикация экрана
- Откройте Platform → API Studio и выберите экран. В списке отображаются все экраны, доступные в консоли, считанные непосредственно из продукта — поэтому экран, выпущенный в этом релизе, будет в этом списке.
- Отметьте галочкой столбцы, которые могут быть удалены. Ничего, что не отмечено галочкой, никогда не отправляется: ни в списке, ни в отдельной записи, ни в том, что возвращается при записи. Ничего не отмечено галочкой изначально, намеренно.
- Определитесь с глаголами. Функция «Чтение» включена по умолчанию; «Создать», «Изменить» и «Удалить» — это отдельные решения, поскольку разрешить их системе прочитать вашу базу данных товаров и разрешить их системе удалить её — это не одно и то же предложение.
- При желании можно ограничить количество строк — только проведенные счета-фактуры, только за этот год. Это тот же фильтр, который отображается на каждом экране списка, применяется на сервере при каждом вызове, и ничто, отправленное вызывающей стороной, не может его расширить.
- Сохраните это. Это черновик, а из черновика ничего не получится. Воплотите его в жизнь, когда это действительно необходимо.
- Перед тем как передать кому-либо ключ, нажмите кнопку «Предварительный просмотр». Она точно покажет, что получит партнер и сколько столбцов было скрыто.
Регистрация программного обеспечения
Клиент — это запись о программном обеспечении: как оно называется, что оно собой представляет, к кому обратиться по вопросам, связанным с ним, и — что наиболее важно — от имени какого вашего пользователя оно действует. Каждый звонок, совершаемый ключом, осуществляется от имени этого пользователя. Что бы они ни делали, ключ тоже не может этого делать.
Это самое важное поле на экране, и именно поэтому раскрытие информации может только сузить доступ, но никогда его не расширить. Направьте клавишу на пользователя, созданного специально для этой цели, с самой узкой ролью, которая выполняет эту работу, а не на настоящего администратора просто потому, что это было удобно.
Сам ключ отображается один раз, при его выдаче, и больше никогда. Выдача нового ключа немедленно прекращает работу старого. Ключ можно отозвать, не удаляя клиента, поэтому в реестре по-прежнему будет указано, кто имел доступ и когда он был отозван.
Где можно использовать ключ
Ключ без разрешенных адресов никуда не ведет. Отсутствие указанных адресов воспринимается как недоступность и никогда не будет восприниматься как доступность из любого места, поскольку утечка ключа, работающего с любого ноутбука в мире, представляет собой весь риск. Существует четыре типа входа: источник из браузера, хост-источник, отдельный адрес или сеть в формате CIDR.
Клиент может быть помечен как доступный из любого места, и иногда это правильно — например, если у партнера действительно меняется исходящий адрес. Это преднамеренное изменение с предупреждением, а не изменение по умолчанию.
Что отправить тому, кто занимается интеграцией?
Студия выводит четыре адреса. Базовый адрес — /api/v1, ключ помещается в заголовок Authorization: Bearer, в файле /api/v1/resources указан список ресурсов, к которым может обращаться этот ключ, а файл /api/v1/openapi.json идентичен документу OpenAPI 3.1.
Оба эти документа генерируются на основе ключа, который их запрашивает. Партнеру никогда не передают документ со списком из сорока конечных точек, к которым он не может обратиться: в его документе точно указано, к чему он может обратиться, и ничего больше, и в нем не может быть описан путь, который будет отклонен, поскольку он построен на основе тех же строк, которые проверяет обработчик запросов.
Те же данные для агента ИИ.
Адрес /api/v1/mcp — это сервер протокола контекста модели (Model Context Protocol). Агенту, подключающемуся к нему, предлагается инструмент для каждой операции, которую может выполнить ключ, и ничего больше — нет инструмента для данных, которые никто не опубликовал, нет инструмента для глагола, который никто не предоставил. Это одна и та же публикация, описанная для модели, а не для разработчика, поэтому эти два понятия никогда не могут расходиться.
Напишите инструкции MCP на стороне клиента. Это единственное место, где модели сообщается, что эти инструменты взаимодействуют с действующим реестром, а не с тестовой средой, и единственное место, где можно указать, что здесь речь идёт о заказах на покупку, а не о заказах на продажу.
Что происходит во время каждого звонка?
Опубликованный вызов не является быстрым доступом к базе данных. Он проходит аутентификацию, проверяется на соответствие условиям доступа и предоставленным правам, а затем выполняется от имени пользователя, от имени которого вы осуществляете запуск, через собственный API платформы — тот же маршрут, который использует консоль. Применяются ограничения по компании, ограничения по бизнес-единицам, ограничения по местам, закрытые периоды, правила проводок, пользовательские поля, пользовательская логика, возможность редактирования и журнал аудита, поскольку это один и тот же выполняемый код.
Каждый вызов записывается, разрешен или отклонен, с указанием причины. Этот журнал находится в разделе Платформа → API Studio → Журнал вызовов API, и наиболее интересной строкой в нем является ключ, предоставленный с адреса, который никому не был разрешен.
Когда это не работает
| Что видит партнер | Что это значит |
|---|---|
| Этот API-ключ не распознан. | Неправильный ключ, или же был выдан новый. |
| Для этого API-ключа не разрешены никакие адреса. | Пока никто не сказал, где это может быть использовано. |
| Использовать этот API-ключ здесь запрещено. | В нем указывается источник и адрес фактического прибытия — как правило, партнер перенес серверы. |
| Здесь ничего не опубликовано как X | Название указано неверно, или доступ к этому ключу не предоставлен, или это всё ещё черновик. |
| Этот ключ не может создать X | Данный документ или грант не допускает использования этого глагола. |
| У вас нет разрешения на просмотр X | Правки в порядке, а права доступа, от имени пользователя, от имени которого выполняется команда, — нет. Студия выводит их в список до того, как партнеру придется их искать. |
В списке клиентов отображается столбец готовности, а не только статус, потому что клиент может быть активен, удерживать ключ и при этом не иметь доступа ни к чему — нет пользователя для запуска, нет разрешенного адреса, ничего не предоставлено. Когда в списке активных клиентов все вызовы возвращаются с отказом, так обычно и проходит день.