ImportOS · Документація

TypeScript SDK

@importos/sdk: типізований клієнт Data API на openapi-fetch, помилки ImportOsApiError, повтори після 429.

@importos/sdk — тонкий типізований клієнт для REST API. Типи генеруються з openapi.json (openapi-typescript), а виклики роблять openapi-fetch (близько 6 KB).

Поки лише в monorepo

Пакет private: його немає в npm-реєстрі. Опублікувати його (і вибрати ім'я та реєстр) має власник Чекає на власника. Усередині monorepo RVAuto2 він підключається як "@importos/sdk": "workspace:*". До публікації для зовнішніх проєктів використовуйте REST напряму або згенеруйте типи самі з /openapi.json.

Створення клієнта

import { createImportOsClient, ImportOsApiError } from '@importos/sdk';

const api = createImportOsClient({
  apiKey: process.env.IMPORTOS_API_KEY!, // тільки на сервері, ніколи в браузері публічного сайту
  baseUrl: 'https://api.importos.app',
  maxRetries: 2, // повторити після 429, якщо Retry-After не більший за maxRetryDelaySec
  maxRetryDelaySec: 30,
});
ПараметрЗначення
apiKeyключ rv_live_…
baseUrlадреса API без кінцевого /
fetchвласна реалізація fetch (тести, проксі)
maxRetriesскільки разів повторити запит після 429 (за замовчуванням 0: не повторювати)
maxRetryDelaySecнайбільша затримка Retry-After, яку клієнт готовий чекати (за замовчуванням 30)

Методи

МетодЕндпоінт
api.landedCost(body)POST /v1/landed-cost
api.marketPrice(query)GET /v1/market-price
api.decodeVin(vin)GET /v1/vin/{vin}
api.searchListings(query)GET /v1/listings/search
api.customsRules(country, date?)GET /v1/rules/{country}
api.fxRate(query)GET /v1/fx
api.clientнизькорівневий клієнт openapi-fetch, усі шляхи типізовані

Експортуються також типи LandedCostRequest, LandedCostResponse, MarketPriceResponse, VinResponse, SearchListingsResponse, RulesResponse, FxResponse, Problem.

const cost = await api.landedCost({
  lot_price: 8000,
  auction: 'copart',
  vehicle: { vin: '4T1B11HK5JU000001', year: 2018, fuel: 'petrol', engine_cc: 2487, damage: 'FRONT END' },
  from: { auction_yard: 'NJ - TRENTON' },
  to: { country: 'UA', city: 'Київ' },
  fee_model: { model: 'fixed', amount: 700, currency: 'USD' },
  date: '2026-10-17',
});
console.log(cost.total, cost.warnings);

Помилки

Будь-яка не-2xx відповідь кидає ImportOsApiError:

try {
  await api.marketPrice({ make: 'Toyota', model: 'Camry', year: 2018, market: 'ua' });
} catch (e) {
  if (e instanceof ImportOsApiError) {
    console.error(e.status, e.code, e.requestId); // 429 'rate_limited' '...'
    if (e.retryAfterSec) await new Promise((r) => setTimeout(r, e.retryAfterSec! * 1000));
  } else {
    throw e;
  }
}
ПолеОпис
statusHTTP-статус
codeстабільний код з problem+json, див. таблицю кодів
problemусе тіло problem+json
requestIdrequest_id або заголовок X-Request-Id
retryAfterSecзаповнено для 429

Перегенерація типів

Типи лежать у packages/sdk/src/generated/schema.d.ts і комітяться разом із openapi.json. Після зміни API:

pnpm --filter @importos/sdk generate

Тести падають, якщо спека чи типи застаріли.

На цій сторінці