Повний каталог одним запитом
GET /v1/catalog повертає кожного видимого вендора з повністю деталізованими провайдерами — без обходу N+1.
Споживач, якому треба все — конструктор форм, picker провайдерів, експортований знімок — раніше обходив каталог у стилі N+1: список вендорів, а далі кожен провайдер окремо заради його схем. GET /v1/catalog замінює це одним запитом:
curl -s "$CREDS_BASE/v1/catalog" -H "Authorization: Bearer $TOKEN"
{
"vendors": [
{
"code": "deepl",
"name": "DeepL",
"website": "https://www.deepl.com",
"status": "active",
"lifecycle": null,
"providers": [
{
"code": "deepl_api",
"name": "DeepL API",
"category": "mt",
"status": "active",
"credential_resolution": {"...": "..."},
"credential_schema": {"...": "..."},
"configuration_schema": {"...": "..."},
"capabilities": {"...": "..."},
"technical_info": {"...": "..."},
"lifecycle": null
}
]
}
],
"catalog_version": "2026.08.24"
}
Кожен вузол провайдера несе всі його каталожні дані — ті самі поля, що й деталі провайдера, мінус надлишкова вкладеність вендора.
Три властивості, на які можна спиратися:
- Нічого про збережені credentials. Навіть про те, чи існує бодай один. Відповідь — чистий каталог; для «чи щось налаштовано?» є Credential Status.
- Видимість — звична матриця. Звичайні ролі отримують
active/deprecatedвендорів і провайдерів;provider_admin/auditor— ще йdisabled;include_removed=true(лише admin/auditor, інакше403) додаєremovedна обох рівнях. Див. Vendors and Providers. - Без пагінації. Payload обмежений розміром YAML-каталогу, який сервіс і так тримає в пам'яті. Якщо викликаєте часто — кешуйте за ключем
catalog_version: він змінюється лише з деплойментом.