Daytona OZON Seller API TypeScript SDK
Daytona OZON Seller API TypeScript SDK
ΠΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ TypeScript/JavaScript SDK Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ OZON Seller API. ΠΠΎΡΡΡΠΎΠ΅Π½ Π½Π° Π±Π°Π·Π΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ MCP Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ.
β¨ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
- π― ΠΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ MCP Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠΈΠΏΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ OZON
- π Π‘ΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TypeScript β Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
- ποΈ ΠΠΎΠ΄ΡΠ»ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ API Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ bundle
- π Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ES2022+ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ JavaScript
- β‘ ΠΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ β ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ HTTP-Π·Π°ΠΏΡΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
- π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡ β Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ±ΠΎΠ΅Π² ΠΈ rate limiting
- π ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ β ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ use cases
- π ΠΠΎΠ»Π½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΡΠΊΠΎΠ³ΠΎ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠΎΠ² Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
π ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° SDK
SDK ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ 278+ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π² 33 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ :
import { OzonSellerApiClient } from 'daytona-ozon-seller-api';
const client = new OzonSellerApiClient({
apiKey: 'your-api-key',
clientId: 'your-client-id'
});
// ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ
client.products // π¦ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ (23+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.finance // π° Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (10+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.analytics // π ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΈ ΠΎΡΡΠ΅ΡΡ (2+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.warehouse // πͺ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ»Π°Π΄Π°ΠΌΠΈ (2+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.returns // π¦ ΠΠΎΠ·Π²ΡΠ°ΡΡ ΡΠΎΠ²Π°ΡΠΎΠ² (8+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.review // β ΠΡΠ·ΡΠ²Ρ ΠΈ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ (7+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.promos // π― ΠΠΊΡΠΈΠΈ ΠΈ ΡΠΊΠΈΠ΄ΠΊΠΈ (8+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
client.report // π ΠΠΈΠ·Π½Π΅Ρ-ΠΎΡΡΠ΅ΡΡ (8+ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
// ... ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅
π― ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
- ποΈ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ², ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Π°ΠΌΠΈ/ΠΎΡΡΠ°ΡΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, Π±ΡΠ΅Π½Π΄Ρ
- π ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΊΠ°Π·ΠΎΠ² β FBO/FBS Π·Π°ΠΊΠ°Π·Ρ, Π΄ΠΎΡΡΠ°Π²ΠΊΠ°, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠΌΠ΅Π½Ρ
- π Π‘ΠΊΠ»Π°Π΄ΡΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠ° β ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ»Π°Π΄Π°ΠΌΠΈ, ΠΏΠΎΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ, ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·Π°ΡΠΈΡ
- π° Π€ΠΈΠ½Π°Π½ΡΠΎΠ²Π°Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° β ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ, ΠΎΡΡΠ΅ΡΡ, Π²ΡΠΏΠ»Π°ΡΡ
- π― ΠΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ β Π°ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠΌΠΎ-ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠ΅Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ
- π₯ Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ β ΠΎΡΠ·ΡΠ²Ρ, Π²ΠΎΠΏΡΠΎΡΡ, ΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°, ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ
π ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
# npm
npm install daytona-ozon-seller-api
# yarn
yarn add daytona-ozon-seller-api
# pnpm
pnpm add daytona-ozon-seller-api
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
import { OzonSellerApiClient } from 'daytona-ozon-seller-api';
// ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
const client = new OzonSellerApiClient({
apiKey: 'your-api-key',
clientId: 'your-client-id'
});
// Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
const client = new OzonSellerApiClient({
apiKey: process.env.OZON_API_KEY!,
clientId: process.env.OZON_CLIENT_ID!,
baseUrl: 'https://api-seller.ozon.ru', // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
timeout: 30000, // 30 ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
retries: 3, // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
userAgent: 'MyStore/1.0 (https://mystore.com)'
});
ΠΠ΅ΡΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
// ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
const connectionStatus = await client.testConnection();
if (connectionStatus.success) {
console.log('β
Π£ΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ OZON API');
} else {
console.error('β ΠΡΠΈΠ±ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:', connectionStatus.message);
}
// ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ²Π°ΡΠΎΠ² Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ
const products = await client.products.getList({
filter: {
visibility: 'VISIBLE',
offer_id: ['SKU-001', 'SKU-002']
},
limit: 100
});
// TypeScript Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ
products.result?.items?.forEach(product => {
console.log(`${product.name}: ${product.price} ΡΡΠ±`);
});
π ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ API
ποΈ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ
- Product API - ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ (23 endpoints)
- Category API - Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ (6 endpoints)
- Brand API - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ΅Π½Π΄Π°ΠΌΠΈ (1 endpoint)
- Barcode API - ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΡΡΠΈΡ -ΠΊΠΎΠ΄ΠΎΠ² (2 endpoints)
π¦ ΠΠ°ΠΊΠ°Π·Ρ ΠΈ Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠ°
- FBO API - Fulfillment by OZON (13 endpoints)
- FBS API - Fulfillment by Seller (22 endpoints)
- FBO Supply Request API - ΠΠ°ΡΠ²ΠΊΠΈ Π½Π° ΠΏΠΎΡΡΠ°Π²ΠΊΡ FBO (19 endpoints)
- Delivery FBS API - ΠΠΎΡΡΠ°Π²ΠΊΠ° FBS (18 endpoints)
- Delivery RFBS API - ΠΠΎΡΡΠ°Π²ΠΊΠ° rFBS (8 endpoints)
π Π‘ΠΊΠ»Π°Π΄Ρ ΠΈ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΡ
- Warehouse API - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ»Π°Π΄Π°ΠΌΠΈ (2 endpoints)
- Prices Stocks API - Π¦Π΅Π½Ρ ΠΈ ΠΎΡΡΠ°ΡΠΊΠΈ (9 endpoints)
- Pricing Strategy API - Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (12 endpoints)
π° Π€ΠΈΠ½Π°Π½ΡΡ ΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ
- Finance API - Π€ΠΈΠ½Π°Π½ΡΠΎΠ²Π°Ρ ΠΎΡΡΠ΅ΡΠ½ΠΎΡΡΡ (10 endpoints)
- Report API - ΠΠΈΠ·Π½Π΅Ρ-ΠΎΡΡΠ΅ΡΡ (8 endpoints)
- Analytics API - ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ (2 endpoints)
π ΠΠΎΠ·Π²ΡΠ°ΡΡ ΠΈ ΠΎΡΠΌΠ΅Π½Ρ
- Return API - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΠΌΠΈ (8 endpoints)
- Returns API - Π‘ΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠ² (1 endpoint)
- RFBS Returns API - ΠΠΎΠ·Π²ΡΠ°ΡΡ rFBS (8 endpoints)
- Cancellation API - ΠΡΠΌΠ΅Π½Ρ Π·Π°ΠΊΠ°Π·ΠΎΠ² (7 endpoints)
π― ΠΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅
- Promos API - ΠΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠΌΠΎ-ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ (8 endpoints)
- Premium API - Premium ΡΠ΅ΡΠ²ΠΈΡΡ (8 endpoints)
- Pricing Strategy API - Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (12 endpoints)
π₯ ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ
- Review API - ΠΡΠ·ΡΠ²Ρ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ (7 endpoints) Premium Plus
- Questions Answers API - ΠΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡ (8 endpoints) Premium Plus
- Chat API - Π§Π°Ρ Ρ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ (8 endpoints)
π Π Π΅ΠΉΡΠΈΠ½Π³ΠΈ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ
- Seller Rating API - Π Π΅ΠΉΡΠΈΠ½Π³ΠΈ ΠΏΡΠΎΠ΄Π°Π²ΡΠ° (2 endpoints)
- Quants API - Π’ΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ½ΠΎΠΌ-ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° (2 endpoints)
π§ Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ API
- Digital API - Π¦ΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠ²Π°ΡΡ (4 endpoints)
- FBS RFBS Marks API - ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΠ²Π°ΡΠΎΠ² (13 endpoints)
- Certification API - Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ²Π°ΡΠΎΠ² (12 endpoints)
- Supplier API - ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°ΠΌΠΈ (4 endpoints)
π§ͺ ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅
- Beta Method API - ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (9 endpoints)
- Pass API - ΠΡΠΎΠΏΡΡΠΊΠ° ΠΈ Π΄ΠΎΡΡΡΠΏΡ (7 endpoints)
- Polygon API - Π’Π΅ΡΡΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° (4 endpoints)
π‘οΈ Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ΅
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ API ΡΡΠ΅Π±ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ:
Premium Plus (ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°)
- Review API - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ·ΡΠ²Π°ΠΌΠΈ
- Questions Answers API - ΠΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡ
ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ API Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΄Π°Π²ΡΠΎΠ²
π Π’ΠΈΠΏΠΎΠ²ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°
const newProduct = await api.product.create({
name: 'ΠΠΎΠ²ΡΠΉ ΡΠΎΠ²Π°Ρ',
category_id: 12345,
price: '1000',
// ... Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
});
// ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠΎΠ²
await api.pricesStocks.updateStocks([{
product_id: newProduct.product_id,
stock: 100
}]);
// ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ
await api.pricesStocks.updatePrices([{
product_id: newProduct.product_id,
price: '1200'
}]);
2. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΊΠ°Π·ΠΎΠ² FBS
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΊΠ°Π·ΠΎΠ²
const orders = await api.fbs.getOrdersList({
filter: { status: 'awaiting_packaging' },
limit: 50
});
// Π‘Π±ΠΎΡΠΊΠ° Π·Π°ΠΊΠ°Π·Π°
for (const order of orders.result) {
await api.fbs.packOrder({
posting_number: order.posting_number,
packages: [/* ΠΏΠ°ΠΊΠ΅ΡΡ */]
});
// ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π² Π΄ΠΎΡΡΠ°Π²ΠΊΡ
await api.fbs.shipOrder({
posting_number: order.posting_number,
tracking_number: 'TRACK123'
});
}
3. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½Π°Π½ΡΠ°ΠΌΠΈ
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π·Π° ΠΌΠ΅ΡΡΡ
const transactions = await api.finance.getTransactionsList({
filter: {
date: {
from: '2024-01-01T00:00:00Z',
to: '2024-01-31T23:59:59Z'
}
}
});
// ΠΠ½Π°Π»ΠΈΠ· Π΄ΠΎΡ
ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ°ΡΡ
ΠΎΠ΄ΠΎΠ²
const totalIncome = transactions.result
.filter(t => t.operation_type === 'ClientReturnAgentOperation')
.reduce((sum, t) => sum + parseFloat(t.amount), 0);
console.log('ΠΠΎΡ
ΠΎΠ΄ Π·Π° ΠΌΠ΅ΡΡΡ:', totalIncome);
4. Π Π°Π±ΠΎΡΠ° Ρ ΠΎΡΠ·ΡΠ²Π°ΠΌΠΈ (Premium Plus)
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
ΠΎΡΠ·ΡΠ²ΠΎΠ²
const reviews = await api.review.getList({
status: 'UNPROCESSED',
limit: 20
});
// ΠΡΠ²Π΅Ρ Π½Π° ΠΎΡΠ·ΡΠ²
for (const review of reviews.reviews) {
await api.review.createComment({
review_id: review.id,
text: 'Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ·ΡΠ²! Π£ΡΡΠ΅ΠΌ Π²Π°ΡΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ.',
mark_review_as_processed: true
});
}
π ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠ²Π°ΡΠΎΠ²
class ProductSynchronizer {
async syncProducts() {
// 1. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ²Π°ΡΡ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
// 2. Π‘ΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ Π² OZON
// 3. Π‘ΠΎΠ·Π΄Π°ΡΡ/ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ²Π°ΡΡ
// 4. Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ°ΡΠΊΠΈ ΠΈ ΡΠ΅Π½Ρ
// 5. ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
}
}
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΊΠ°Π·ΠΎΠ²
class OrderAutomation {
async processOrders() {
// 1. ΠΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΊΠ°Π·Ρ
// 2. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΡΠΎΠ²Π°ΡΠΎΠ²
// 3. Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π·Π°ΠΊΠ°Π·Ρ
// 4. ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΠ»ΡΠΆΠ±Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ
// 5. ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌ
}
}
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΎΠ²
class RatingMonitor {
async monitorRatings() {
// 1. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ
// 2. Π‘ΡΠ°Π²Π½ΠΈΡΡ Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
// 3. ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΡ
ΡΠ΄ΡΠ΅Π½ΠΈΠΈ
// 4. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ
}
}
π οΈ Π£ΡΠΈΠ»ΠΈΡΡ ΠΈ Ρ Π΅Π»ΠΏΠ΅ΡΡ
Batch ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
// ΠΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π½
const batchUpdatePrices = async (products: ProductPrice[]) => {
const batches = chunkArray(products, 1000); // Π Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π° Π±Π°ΡΡΠΈ
for (const batch of batches) {
await api.pricesStocks.updatePrices(batch);
await delay(1000); // Π‘ΠΎΠ±Π»ΡΠ΄Π°Π΅ΠΌ Π»ΠΈΠΌΠΈΡΡ API
}
};
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
const withRetry = async <T>(
operation: () => Promise<T>,
maxRetries: number = 3
): Promise<T> => {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await operation();
} catch (error) {
if (attempt === maxRetries) throw error;
await delay(Math.pow(2, attempt) * 1000);
}
}
throw new Error('All retries failed');
};
π ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ
- ΠΠΎΠ½Π²Π΅ΡΡΠΈΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² - ΠΏΡΠΎΡΠ΅Π½Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π·Π°ΠΊΠ°Π·ΠΎΠ²
- ΠΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ - ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π·Π°ΠΊΠ°Π·Π° Π΄ΠΎ ΠΎΡΠ³ΡΡΠ·ΠΊΠΈ
- Π Π΅ΠΉΡΠΈΠ½Π³ ΠΏΡΠΎΠ΄Π°Π²ΡΠ° - Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΡΡΠ°ΡΠΊΠΈ ΡΠΎΠ²Π°ΡΠΎΠ² - ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ
- Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ - Π΄ΠΎΡ ΠΎΠ΄Ρ, ΡΠ°ΡΡ ΠΎΠ΄Ρ, ΡΠ΅Π½ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π»Π΅ΡΡΠΎΠ²
- ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΡΠΈΠ½Π³Π°
- ΠΠ°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠΎΠ²Π°ΡΠΎΠ²
- ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ
- Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ
π ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ API ΠΊΠ»ΡΡΠ°ΠΌΠΈ
- Π Π΅Π³ΡΠ»ΡΡΠ½Π°Ρ ΡΠΎΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ IP
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ²
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ
ΠΠΈΠΌΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: 1000 Π·Π°ΠΏΡΠΎΡΠΎΠ²/ΠΌΠΈΠ½ΡΡΡ
- Π’ΡΠΆΠ΅Π»ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: 100 Π·Π°ΠΏΡΠΎΡΠΎΠ²/ΠΌΠΈΠ½ΡΡΡ
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²: 50 Π·Π°ΠΏΡΠΎΡΠΎΠ²/ΠΌΠΈΠ½ΡΡΡ
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
- ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ
- Batch ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π»Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
- Graceful degradation ΠΏΡΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ API
π ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
const api = new OzonSellerAPI({
clientId: 'your-client-id',
apiKey: 'your-api-key',
debug: true // ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
});
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ
401 Unauthorized
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Client ID ΠΈ API Key
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΠΈΡΡΠ΅ΠΊΠ»ΠΈ
429 Too Many Requests
- Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ exponential backoff
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ batch ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ
422 Validation Error
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ TypeScript Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ²
- ΠΠ·ΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°
π ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
- Email: api-support@ozon.ru
- Π€ΠΎΡΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²ΡΠ°
π ΠΠΈΡΠ΅Π½Π·ΠΈΡ
MIT License - ΡΠΌ. ΡΠ°ΠΉΠ» LICENSE Π΄Π»Ρ Π΄Π΅ΡΠ°Π»Π΅ΠΉ.
π€ ΠΠΊΠ»Π°Π΄ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
ΠΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΠΌ Π²ΠΊΠ»Π°Π΄ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°! Π‘ΠΌ. CONTRIBUTING.md Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠ΅ΡΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ: 1.0.0
ΠΠ°ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ: 2024-01-15
ΠΠΎΠΊΡΡΡΠΈΠ΅ API: 278 endpoints Π² 33 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ: OZON Seller API v2/v3