TypeScript-клиент API организаций Mostovik
Клиент покрывает два endpoint API v2:
GET /api/v2/organizations/— список организаций.GET /api/v2/organizations/{uid}/— карточка одной организации.
Пакет не имеет runtime-зависимостей и использует fetch. В settings.dev backend открывает эти endpoint без JWT, в остальных окружениях можно передать accessToken или свои headers.
import { MostovikOrganizationsClient } from "@mostovik/organizations-api-client";
const client = new MostovikOrganizationsClient({
baseUrl: "https://backend.example.com",
accessToken: "<jwt>",
});
const page = await client.listOrganizations({
page: 1,
page_size: 20,
search: "мост",
has_registry: true,
has_industrial: true,
data: ["industrial", "fns_reports"],
});
const item = await client.getOrganization(page.data[0].uid, {
data_sources: ["industrial", "fns_reports"],
});
Методы
listOrganizations(params?, options?)
Вызывает GET /api/v2/organizations/.
Возвращает пагинированный ответ:
{
success: true,
data: Organization[],
errors: null,
meta: {
pagination: {
page: number,
page_size: number,
total_count: number,
total_pages: number,
has_next: boolean,
has_previous: boolean,
},
},
}
Важно: backend по умолчанию применяет has_registry=true для list endpoint, если параметр has_registry не передан. Чтобы получить организации без активного участия в реестрах, передайте has_registry: false.
getOrganization(uid, params?, options?)
Вызывает GET /api/v2/organizations/{uid}/.
Возвращает сам объект Organization, без wrapper success/data/meta.
Параметры списка
| Параметр | Тип | Назначение |
|---|---|---|
page |
number |
Номер страницы пагинации. Backend default: 1. |
page_size |
number |
Размер страницы. Backend default: 20, максимум 100. |
search |
string |
Поиск по наименованию, ИНН, КПП, ОГРН и ОГРИП. |
ordering |
OrganizationOrdering |
Сортировка по uid, name, inn, kpp, ogrn, ogrip; префикс - включает обратный порядок, например -name. |
name |
string |
Фильтр по части полного наименования организации. |
inn |
string |
Точный фильтр по ИНН. |
kpp |
string |
Точный фильтр по КПП. |
ogrn |
string |
Точный фильтр по ОГРН. |
ogrip |
string |
Точный фильтр по ОГРИП. |
registry |
string |
UUID реестра. Возвращает организации с активным участием в этом реестре. |
registry_name |
string |
Фильтр по части наименования реестра. |
has_registry |
boolean |
Фильтр наличия активного участия в любом реестре. |
has_industrial |
boolean |
Наличие данных источника industrial. |
has_industrial_products |
boolean |
Наличие данных источника industrial_products. |
has_manufactures |
boolean |
Наличие данных источника manufactures. |
has_inspections |
boolean |
Наличие данных источника inspections. |
has_procurements |
boolean |
Наличие данных источника procurements. |
has_procurements_44fz |
boolean |
Наличие данных источника procurements_44fz. |
has_procurements_223fz |
boolean |
Наличие данных источника procurements_223fz. |
has_contracts |
boolean |
Наличие данных источника contracts. |
has_unfair_suppliers |
boolean |
Наличие данных источника unfair_suppliers. |
has_fas_goz |
boolean |
Наличие данных источника fas_goz. |
has_arbitration |
boolean |
Наличие данных источника arbitration. |
has_fedresurs_bankruptcy |
boolean |
Наличие данных источника fedresurs_bankruptcy. |
has_fstec |
boolean |
Наличие данных источника fstec. |
has_vacancies |
boolean |
Наличие данных публичного источника API v2 vacancies. Внутренний backend source — trudvsem. |
has_trudvsem |
boolean |
Deprecated alias backend для has_vacancies; оставлен в типах, но новый код должен использовать has_vacancies. |
has_fns_reports |
boolean |
Наличие данных источника fns_reports. |
data |
OrganizationDataSource | OrganizationDataSource[] |
Вернуть в блоке data только указанные источники. |
data_sources |
OrganizationDataSource | OrganizationDataSource[] |
Alias для data. |
exclude_data |
OrganizationDataSource | OrganizationDataSource[] |
Исключить указанные источники из блока data. |
exclude_data_sources |
OrganizationDataSource | OrganizationDataSource[] |
Alias для exclude_data. |
Параметры карточки
getOrganization(uid, params) принимает path-параметр uid и параметры управления блоком data:
| Параметр | Тип | Назначение |
|---|---|---|
uid |
string |
UID организации в path: /api/v2/organizations/{uid}/. |
data |
OrganizationDataSource | OrganizationDataSource[] |
Вернуть в блоке data только указанные источники. |
data_sources |
OrganizationDataSource | OrganizationDataSource[] |
Alias для data. |
exclude_data |
OrganizationDataSource | OrganizationDataSource[] |
Исключить указанные источники из блока data. |
exclude_data_sources |
OrganizationDataSource | OrganizationDataSource[] |
Alias для exclude_data. |
Backend также принимает CSV-строки для data/exclude_data, но в клиенте лучше передавать массив: так TypeScript проверит допустимые source keys.
Источники данных
Допустимые публичные source keys API v2:
arbitrationcontractsfas_gozfedresurs_bankruptcyfns_reportsfstecindustrialindustrial_productsinspectionsmanufacturesprocurementsprocurements_44fzprocurements_223fzunfair_suppliersvacancies
Публичный ключ для Работа России — vacancies. Параметры data=trudvsem и data_sources=trudvsem backend API v2 отклоняет.
Структуры ответа
Organization содержит:
uid,name,normalized_name,inn,kpp,ogrn,ogripregistries— активные реестры организации:{ id, name }[]data_sources— краткая сводка непустых источников:{ source, count }[]data— объект, где ключи являются source keys, а значения — массивы записей источников
В types.ts описаны структуры всех возвращаемых блоков data:
IndustrialCertificateRecordдляindustrialIndustrialProductRecordдляindustrial_productsManufacturerRecordдляmanufacturesInspectionRecordдляinspectionsProcurementRecordдляprocurementsGenericOrganizationSourceRecordдляprocurements_44fz,procurements_223fz,contracts,unfair_suppliers,fas_goz,arbitration,fedresurs_bankruptcy,fstec,vacanciesFinancialReportRecordиFinancialReportLineValueдляfns_reports
Для GenericOrganizationSourceRecord.payload используется отдельный тип GenericSourcePayload. Это JSON-object, потому что backend сохраняет в этом поле исходный нормализованный документ внешнего generic-источника как dict.
Ошибки
Для HTTP-ответов вне диапазона 2xx клиент бросает ApiClientError:
import { ApiClientError } from "@mostovik/organizations-api-client";
try {
await client.getOrganization(uid, { data: ["industrial"] });
} catch (error) {
if (error instanceof ApiClientError) {
console.log(error.status);
console.log(error.payload);
}
}
ApiClientError.payload типизирован как ApiErrorPayload:
{
success: false,
data: null,
errors: Array<{
code: string,
message: string,
details?: JsonObject,
}>,
meta: {
request_id?: string,
} | null,
}