b-ambitions/datanewton-laravel

Laravel package for Datanewton API integration

Installs: 5

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/b-ambitions/datanewton-laravel

v1.0.2 2026-02-07 15:56 UTC

This package is auto-updated.

Last update: 2026-02-07 15:58:15 UTC


README

Laravel пакет для работы с API Datanewton - сервиса проверки контрагентов.

Установка

composer require b-ambitions/datanewton-laravel

Конфигурация

Опубликуйте конфигурационный файл:

php artisan vendor:publish --tag=datanewton-config

Добавьте в .env:

DATANEWTON_API_KEY=your-api-key
DATANEWTON_BASE_URL=https://api.datanewton.ru
DATANEWTON_CACHE_TTL=3600
DATANEWTON_LOGGING_ENABLED=true

Использование

Базовое использование

use BAmbitions\Datanewton\Facades\Datanewton;

// Получить информацию о контрагенте
$company = Datanewton::counterparty()->get(inn: '7707083893');

// Или через ОГРН
$company = Datanewton::counterparty()->get(ogrn: '1027700132195');

// С дополнительными фильтрами
$company = Datanewton::counterparty()->getWithFilters(
    inn: '7707083893',
    filters: ['OWNER_BLOCK', 'MANAGER_BLOCK', 'CONTACT_BLOCK']
);
// Поиск контрагентов
$suggestions = Datanewton::suggestions()->search('Датаномика');

// Поиск только ЮЛ
$companies = Datanewton::suggestions()->search('ООО', type: 'ul');

// Поиск только действующих
$active = Datanewton::suggestions()->search('Транспорт', isActive: true);

// Поиск по домену
$byDomain = Datanewton::suggestions()->searchByDomain('datanewton.ru');

// Поиск по адресу (массовость)
$byAddress = Datanewton::suggestions()->searchByAddress(
    'Москва, Ленинский проспект',
    limit: 50
);
// Предпросмотр (до 20 компаний)
$preview = Datanewton::filters()->preview([
    'okveds' => ['62.01'],
    'region_codes' => ['77'],
    'only_active' => true,
]);

// Полная выборка по фильтрам
$companies = Datanewton::filters()->search([
    'okveds' => ['62.01', '62.02'],
    'region_codes' => ['77', '78'],
    'only_active' => true,
    'income_from' => 100000,
    'income_to' => 10000000,
], limit: 100, offset: 0);

// Поиск по ОКВЭД
$byOkved = Datanewton::filters()->searchByOkveds(
    okveds: ['62.01'],
    onlyActive: true,
    onlyMainOkveds: true
);

// Поиск по выручке
$byIncome = Datanewton::filters()->searchByIncome(
    incomeFrom: 1000000,
    incomeTo: 50000000,
    onlyActive: true
);

// Поиск МСП
$msp = Datanewton::filters()->searchMsp(
    mspCategories: ['1', '2'], // микро и малые
    onlyActive: true
);

// Поиск с контактами
$withContacts = Datanewton::filters()->searchWithContacts(
    withPhones: true,
    withEmails: true,
    operator: 'AND' // должны быть и телефон, и email
);

// Поиск по вакансиям
$withVacancies = Datanewton::filters()->searchByVacancies([
    'has_vacancies' => true,
    'salary_min' => 100000,
    'text' => 'программист',
    'source' => 'ALL'
]);

// Поиск по контрактам
$withContracts = Datanewton::filters()->searchByContracts([
    'role' => 'SUPPLIER',
    'contract_type' => 'FZ44',
    'has_contracts' => true,
    'min_price' => 1000000,
]);

Пакетные операции

// Получить данные по списку ИНН/ОГРН (до 5000)
$cards = Datanewton::batch()->getCards([
    '7707083893',
    '1027700132195',
    '7728212268',
]);

// Обработка большого списка по частям
$largeList = [...]; // массив из 10000 ИНН

foreach (Datanewton::batch()->getCardsInChunks($largeList, 1000) as $chunk) {
    // Обработка каждой части по 1000 записей
    foreach ($chunk['data'] as $company) {
        // ...
    }
}

Мониторинг изменений

// Получить все изменения с определенной даты
$changes = Datanewton::monitoring()->getChanges(
    ogrns: ['1027700132195', '1207700223257'],
    startDate: '2024-01-01',
    includeHistory: true,
    paramTypes: ['ALL']
);

// Мониторинг конкретных параметров
$statusChanges = Datanewton::monitoring()->monitorStatus(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01'
);

$managerChanges = Datanewton::monitoring()->monitorManagers(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01',
    includeHistory: true
);

$ownerChanges = Datanewton::monitoring()->monitorOwners(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01'
);

$addressChanges = Datanewton::monitoring()->monitorAddress(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01'
);

$mspChanges = Datanewton::monitoring()->monitorMsp(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01'
);

$reportChanges = Datanewton::monitoring()->monitorReports(
    ogrns: ['1027700132195'],
    startDate: '2024-01-01'
);

Финансовые показатели

// Получить все финансовые данные
$finance = Datanewton::finance()->get(inn: '7707083893');

// Получить только баланс
$balance = Datanewton::finance()->getBalance(inn: '7707083893');

// Получить финансовые результаты
$finResults = Datanewton::finance()->getFinancialResults(inn: '7707083893');

// Получить движение денежных средств
$cashFlow = Datanewton::finance()->getCashFlow(inn: '7707083893');

// Получить выручку за последний год
$revenue = Datanewton::finance()->getRevenue(inn: '7707083893');

// Получить чистую прибыль
$netIncome = Datanewton::finance()->getNetIncome(inn: '7707083893');

// Использование DTO
use BAmbitions\Datanewton\DTO\Finance\FinancialIndicators;

$financeData = Datanewton::finance()->get(inn: '7707083893');
$indicators = FinancialIndicators::fromArray($financeData);

$latestYear = $indicators->getLatestYear();
$revenue = $indicators->getRevenue($latestYear);
$netIncome = $indicators->getNetIncome($latestYear);
$assets = $indicators->getAssets($latestYear);

Налоги

// Полная информация о налогах
$taxInfo = Datanewton::tax()->getInfo(inn: '7707083893');

// Только уплаченные налоги
$paidTaxes = Datanewton::tax()->getPaidTaxes(inn: '7707083893');

// Проверить наличие задолженности
$hasDebt = Datanewton::tax()->hasDebt(inn: '7707083893');

// Получить сумму задолженности
$debtAmount = Datanewton::tax()->getTotalDebt(inn: '7707083893');

Госконтракты

// Все контракты
$contracts = Datanewton::contracts()->get(
    inn: '7707083893',
    types: ['ALL']
);

// Только ФЗ-44
$fz44 = Datanewton::contracts()->getFz44(inn: '7707083893');

// Только ФЗ-223
$fz223 = Datanewton::contracts()->getFz223(inn: '7707083893');

// Контракты как поставщик
$asSupplier = Datanewton::contracts()->getAsSupplier(
    inn: '7707083893',
    types: ['FZ44']
);

// Контракты как заказчик
$asCustomer = Datanewton::contracts()->getAsCustomer(inn: '7707083893');

// Поиск по сумме
$byPrice = Datanewton::contracts()->searchByPrice(
    priceFrom: 1000000,
    priceTo: 10000000,
    inn: '7707083893'
);

// Только активные
$active = Datanewton::contracts()->getActive(inn: '7707083893');

// Статистика
$stats = Datanewton::contracts()->getStatistics(
    ogrn: '1027700132195',
    type: 'FZ44'
);

// Получить список ОКПД
$okpdList = Datanewton::contracts()->getOkpdList(inn: '7707083893');

Лизинг

// Поиск договоров лизинга
$leases = Datanewton::leases()->search([
    'only_active' => true,
    'classifier_codes' => ['0106008'],
]);

// Активные договоры
$activeLeases = Datanewton::leases()->getActive(
    leaseStartFrom: '2020-01-01',
    leaseStartTo: '2024-12-31',
    classifierCodes: ['0106008']
);

// Поиск по ключевым словам
$byText = Datanewton::leases()->searchByText(
    searchText: 'автомобиль',
    onlyActive: true
);

// Поиск по регионам
$byRegion = Datanewton::leases()->searchByRegions(
    regionCodes: ['77', '78'],
    onlyActive: true
);

Арбитражные дела

// Получить все дела
$cases = Datanewton::arbitration()->getCases(
    inn: '7707083893',
    limit: 50
);

// Дела как ответчик
$asRespondent = Datanewton::arbitration()->getCasesAsRespondent(
    inn: '7707083893',
    status: 'CLOSE'
);

// Дела как истец
$asPlaintiff = Datanewton::arbitration()->getCasesAsPlaintiff(
    inn: '7707083893'
);

// Поиск по сумме иска
$bySum = Datanewton::arbitration()->searchBySum(
    sumFrom: 1000000,
    sumTo: 10000000
);

// Поиск по периоду
$byPeriod = Datanewton::arbitration()->searchByPeriod(
    startDateFrom: '2024-01-01',
    startDateTo: '2024-12-31'
);

// Batch поиск с фильтрами
$batchCases = Datanewton::arbitration()->batchSearch([
    'role' => 'RESPONDENT',
    'status' => '1',
    'dispute' => '3',
    'sum_from' => 500000,
], limit: 100);

Проверки

// Получить проверки
$inspections = Datanewton::inspections()->get(
    inn: '7707083893',
    limit: 50
);

// Статистика по проверкам
$stats = Datanewton::inspections()->getStatistics(
    inn: '7707083893'
);

// Завершённые проверки
$completed = Datanewton::inspections()->getCompleted(
    inn: '7707083893'
);

// Поиск по типу надзора
$bySupervision = Datanewton::inspections()->searchBySupervision(
    supervision: 'FIRE',
    inn: '7707083893'
);

// Поиск по периоду
$byPeriod = Datanewton::inspections()->searchByPeriod(
    startDateFrom: '2024-01-01',
    startDateTo: '2024-12-31',
    inn: '7707083893'
);

Скоринг и риски

// Скоринг надёжности
$scoring = Datanewton::scoring()->get(inn: '7707083893');
$score = Datanewton::scoring()->getScore(inn: '7707083893'); // 1-5
$status = Datanewton::scoring()->getStatus(inn: '7707083893'); // LOW/MID/HIGH

// Проверки надёжности
$isHighReliability = Datanewton::scoring()->isHighReliability(inn: '7707083893');
$isLowReliability = Datanewton::scoring()->isLowReliability(inn: '7707083893');

// Риски
$risks = Datanewton::risks()->get(inn: '7707083893');

// Негативные списки
$negativeLists = Datanewton::risks()->getNegativeLists(inn: '7707083893');

// Признаки однодневки
$oneDayFlags = Datanewton::risks()->getOneDayCompanyFlags(inn: '7707083893');

// Проверка наличия рисков
$hasRisks = Datanewton::risks()->hasActiveRisks(inn: '7707083893');

// Количество рисков
$riskCount = Datanewton::risks()->countRisks(inn: '7707083893');
$negativeCount = Datanewton::risks()->countRisks(inn: '7707083893', color: 'NEGATIVE');

СРО

// Членство в СРО
$sro = Datanewton::sro()->getMembership(inn: '7707083893');

// Только НОСТРОЙ
$nostroy = Datanewton::sro()->getNostroy(inn: '7707083893');

// Только НОПРИЗ
$nopriz = Datanewton::sro()->getNopriz(inn: '7707083893');

// Проверить активное членство
$isActiveMember = Datanewton::sro()->hasActiveMembership(
    inn: '7707083893',
    type: 'НОСТРОЙ'
);

Банкротство

// Признаки банкротства
$bankruptcy = Datanewton::bankruptcy()->get(inn: '7707083893');

// Проверить наличие
$hasBankruptcy = Datanewton::bankruptcy()->hasBankruptcySigns(inn: '7707083893');

// Последнее сообщение
$latest = Datanewton::bankruptcy()->getLatest(inn: '7707083893');

Корпоративные действия

// Все корпоративные действия
$actions = Datanewton::corporateActions()->get(
    inn: '7707083893',
    limit: 50
);

// Изменения капитала
$capitalChanges = Datanewton::corporateActions()->getCapitalChanges(
    inn: '7707083893'
);

// Действия с реестром
$registerActions = Datanewton::corporateActions()->getRegisterActions(
    inn: '7707083893'
);

// Поиск по типу
$byType = Datanewton::corporateActions()->searchByType(
    type: 'FirmLiquidation',
    inn: '7707083893'
);

// Поиск по периоду
$byPeriod = Datanewton::corporateActions()->searchByPeriod(
    dateFrom: '2024-01-01',
    dateTo: '2024-12-31',
    inn: '7707083893'
);

Связи

// Получить граф связей (до 2 уровня)
$links = Datanewton::links()->get(ogrn: '1027700132195', level: 2);

// Только первый уровень
$firstLevel = Datanewton::links()->getFirstLevel(ogrn: '1027700132195');

// Получить узлы графа
$nodes = Datanewton::links()->getNodes(ogrn: '1027700132195');

// Получить связи
$edges = Datanewton::links()->getEdges(ogrn: '1027700132195');

// Связанные компании
$relatedCompanies = Datanewton::links()->getRelatedCompanies(
    ogrn: '1027700132195'
);

// Связанные физлица
$relatedPersons = Datanewton::links()->getRelatedPersons(
    ogrn: '1027700132195'
);

Блокировки счетов

use BAmbitions\Datanewton\Services\BlockedAccountService;

$blockedAccounts = app(BlockedAccountService::class);

// Получить информацию о блокировках
$blockages = $blockedAccounts->get(inn: '7707083893');

// Проверить наличие блокировок
$hasBlockages = $blockedAccounts->hasBlockages(inn: '7707083893');

// Количество блокировок
$count = $blockedAccounts->getBlockagesCount(inn: '7707083893');

Реестр НКО

use BAmbitions\Datanewton\Services\NkoService;

$nko = app(NkoService::class);

// Получить информацию
$nkoInfo = $nko->get(inn: '7707531513');

// Проверить является ли НКО
$isNko = $nko->isNko(inn: '7707531513');

// Получить статус
$status = $nko->getStatus(inn: '7707531513');

// Регионы
$regions = Datanewton::dictionary()->getRegions();

## // ОКВЭД
$okveds = Datanewton::dictionary()->getOkveds();

## // ОКПД2
$okpd2 = Datanewton::dictionary()->getOkpd2();

// Лицензии
$licenses = Datanewton::dictionary()->getLicenses();

// Классификатор лизингов
$leaseClassifier = Datanewton::dictionary()->getLeaseClassifier();

// Арбитражные суды
$courts = Datanewton::dictionary()->getArbitrationCourts();

// Типы документов арбитражных дел
$docTypes = Datanewton::dictionary()->getArbitrationDocumentTypes();

// Категории споров
$disputes = Datanewton::dictionary()->getArbitrationDisputes();

// Получить регион по коду
$region = Datanewton::dictionary()->getRegionByCode('77');

Статус самозанятого

// Проверить статус самозанятых
$statuses = Datanewton::taxpayer()->getStatuses([
    '123456789012',
    '987654321098',
]);

Использование с DTO

use BAmbitions\Datanewton\DTO\Counterparty\CompanyInfo;

$data = Datanewton::counterparty()->getWithFilters(inn: '7707083893');
$company = CompanyInfo::fromArray($data);

// Удобный доступ к данным
echo $company->shortName;
echo $company->fullName;
echo $company->inn;
echo $company->ogrn;

// Проверки
if ($company->isActiveCompany()) {
    echo "Компания действует";
}

if ($company->hasNegativeFlags()) {
    echo "Есть негативные признаки";
}

// Получить основной ОКВЭД
$mainOkved = $company->getMainOkved();

// Контакты
$emails = $company->getEmails();
$phones = $company->getPhones();
$websites = $company->getWebsites();

Обработка ошибок

use BAmbitions\Datanewton\Exceptions\DatanewtonException;

try {
    $company = Datanewton::counterparty()->get(inn: '1234567890');
} catch (DatanewtonException $e) {
    // Код ошибки API
    $code = $e->getCode();
    
    // Сообщение об ошибке
    $message = $e->getMessage();
    
    // Исходные параметры запроса
    $source = $e->getSource();
    
    Log::error('Datanewton API Error', [
        'code' => $code,
        'message' => $message,
        'source' => $source,
    ]);
}

Кэширование

Пакет поддерживает автоматическое кэширование GET-запросов:

// В config/datanewton.php или .env
'cache' => [
    'enabled' => true,
    'ttl' => 3600, // 1 час
    'prefix' => 'datanewton',
],

Очистка кэша:

use Illuminate\Support\Facades\Cache;

// Очистить весь кэш Datanewton
Cache::flush();

// Или с префиксом
Cache::tags(['datanewton'])->flush();

Логирование

Включите логирование для отладки:

// В .env
DATANEWTON_LOGGING_ENABLED=true
DATANEWTON_LOG_CHANNEL=stack

License

MIT License.

Author

Mikhail Solovian - mikhail.s1990@gmail.com