πŸ†Certification API

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСртификатами ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ соотвСтствия Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² OZON

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
4 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сСртификатов

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
3 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΈ отвязка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΎΡ‚ сСртификатов

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ
4 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π’ΠΈΠΏΡ‹, статусы, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ отклонСния

ВрСбования ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ
4 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ

πŸ“š ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ πŸ“‘ ИндСкс API πŸš€ Быстрый старт ❓ FAQ
πŸ“š ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ πŸ“‘ ИндСкс API πŸš€ Быстрый старт ❓ FAQ

πŸš€ Быстрый старт

1

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹

Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ доступныС Ρ‚ΠΈΠΏΡ‹ сСртификатов

2

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ сСртификат

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ сСртификата

3

ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹

Π‘Π²ΡΠ·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ с созданным сСртификатом

4

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ статусы ΠΈ сроки дСйствия

import { OzonSellerAPI } from 'daytona-ozon-seller-api';

const client = new OzonSellerAPI({
  clientId: 'your-client-id',
  apiKey: 'your-api-key'
});

// Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ workflow Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСртификатами
try {
  // 1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступныС Ρ‚ΠΈΠΏΡ‹ сСртификатов
  const types = await client.certification.getCertificateTypes();
  console.log(`πŸ“‹ Доступно Ρ‚ΠΈΠΏΠΎΠ² сСртификатов: ${types.result?.length}`);

  // 2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСртификат
  const newCertificate = await client.certification.createCertificate({
    name: 'Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ соотвСтствия Π“ΠžΠ‘Π’ Π ',
    type_code: 'GOST_CERTIFICATE',
    number: 'РОББ RU.АИ37.H00124',
    issue_date: '2024-01-01T00:00:00Z',
    files: ['base64_encoded_file_content'] // PDF/JPG Ρ„Π°ΠΉΠ» Π² base64
  });

  console.log(`βœ… Π‘ΠΎΠ·Π΄Π°Π½ сСртификат с ID: ${newCertificate.id}`);

  // 3. ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΊ сСртификату
  const bindResult = await client.certification.bindCertificate({
    certificate_id: newCertificate.id!,
    product_id: ['product-123', 'product-456', 'product-789']
  });

  console.log('πŸ”— Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ привязки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²:');
  bindResult.result?.forEach(item => {
    if (item.status === 'success') {
      console.log(`   βœ… ${item.product_id} - ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ привязан`);
    } else {
      console.log(`   ❌ ${item.product_id} - ошибка: ${item.error}`);
    }
  });

} catch (error) {
  console.error('❌ Ошибка Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСртификатами:', error);
}

πŸ”„ Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сСртификата

DRAFT

Π§Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ

β†’

PENDING

На ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΠΈ

β†’

ACTIVE

Активный

β†’

EXPIRED

Π˜ΡΡ‚Π΅ΠΊΡˆΠΈΠΉ

REJECTED

ΠžΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½

Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ исправлСния
15
ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² API
5,200+
ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚
12+
Π’ΠΈΠΏΠΎΠ² сСртификатов
98%
Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… привязок

πŸ”— ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΊ сСртификатам

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ массовой привязки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

βœ…
product-123 - ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ привязан ΠΊ сСртификату
Бтатус: Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅
βœ…
product-456 - ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ привязан ΠΊ сСртификату
Бтатус: Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅
❌
product-789 - ошибка привязки
ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Ρ‚ΠΎΠ²Π°Ρ€ ΡƒΠΆΠ΅ привязан ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСртификату
// МассовоС созданиС ΠΈ привязка сСртификатов
const createBulkCertificates = async (certificateData: Array<{
  name: string;
  type_code: string;
  number: string;
  issue_date: string;
  file_content: string; // base64
  product_ids: string[];
}>) => {
  const results = {
    created: 0,
    failed: 0,
    bound: 0,
    bindErrors: 0
  };

  for (const certData of certificateData) {
    try {
      console.log(`πŸ”„ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСртификата: ${certData.name}`);
      
      // 1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ сСртификат
      const certificate = await client.certification.createCertificate({
        name: certData.name,
        type_code: certData.type_code,
        number: certData.number,
        issue_date: certData.issue_date,
        files: [certData.file_content]
      });

      if (certificate.id) {
        results.created++;
        console.log(`   βœ… Π‘ΠΎΠ·Π΄Π°Π½ с ID: ${certificate.id}`);

        // 2. ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹
        const bindResult = await client.certification.bindCertificate({
          certificate_id: certificate.id,
          product_id: certData.product_ids
        });

        bindResult.result?.forEach(item => {
          if (item.status === 'success') {
            results.bound++;
          } else {
            results.bindErrors++;
            console.log(`   ⚠️ Ошибка привязки ${item.product_id}: ${item.error}`);
          }
        });
      }

      // ΠŸΠ°ΡƒΠ·Π° ΠΌΠ΅ΠΆΠ΄Ρƒ запросами
      await new Promise(resolve => setTimeout(resolve, 2000));

    } catch (error) {
      results.failed++;
      console.error(`❌ Ошибка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСртификата ${certData.name}:`, error);
    }
  }

  console.log('\nπŸ“Š Π˜Ρ‚ΠΎΠ³ΠΈ массового создания:');
  console.log(`   Π‘ΠΎΠ·Π΄Π°Π½ΠΎ сСртификатов: ${results.created}`);
  console.log(`   Π’ΠΎΠ²Π°Ρ€ΠΎΠ² привязано: ${results.bound}`);
  console.log(`   Ошибок привязки: ${results.bindErrors}`);

  return results;
};

πŸ“‹ Π’ΠΈΠΏΡ‹ сСртификатов

GOST_CERTIFICATE

Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ соотвСтствия Π“ΠžΠ‘Π’

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ соотвСтствиС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ трСбованиям государствСнных стандартов

DECLARATION

ДСкларация соотвСтствия

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒ заявляСт ΠΎ соотвСтствии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ тСхничСским Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π°ΠΌ

SGR_CERTIFICATE

Π‘Π²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΎ государствСнной рСгистрации

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ для космСтики, БАДов ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² дСтского питания

QUALITY_CERTIFICATE

Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ качСства

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ качСствСнныС характСристики ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ

SAFETY_CERTIFICATE

Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ бСзопасности

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ

πŸ“Š ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСртификатов

// ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ статусов сСртификатов
const monitorCertificateStatuses = async () => {
  try {
    // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС сСртификаты с ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ
    const allCertificates: any[] = [];
    let page = 1;
    let hasMore = true;

    while (hasMore) {
      const response = await client.certification.getCertificateList({
        page,
        page_size: 100
      });

      if (response.result?.certificates) {
        allCertificates.push(...response.result.certificates);
      }

      hasMore = (response.result?.total || 0) > page * 100;
      page++;
    }

    console.log(`πŸ“Š ВсСго сСртификатов: ${allCertificates.length}`);

    // Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ статусам
    const statusGroups = allCertificates.reduce((groups: Record, cert) => {
      const status = cert.status || 'UNKNOWN';
      if (!groups[status]) groups[status] = [];
      groups[status].push(cert);
      return groups;
    }, {});

    console.log('\nπŸ“ˆ Бтатистика ΠΏΠΎ статусам:');
    Object.entries(statusGroups).forEach(([status, certificates]) => {
      console.log(`   ${status}: ${certificates.length} сСртификатов`);
    });

    // Поиск ΠΈΡΡ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΡ… сСртификатов (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 30 Π΄Π½Π΅ΠΉ)
    const now = new Date();
    const in30Days = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);
    
    const expiringSoon = allCertificates.filter(cert => {
      if (!cert.expire_date) return false;
      const expireDate = new Date(cert.expire_date);
      return expireDate >= now && expireDate <= in30Days;
    });

    if (expiringSoon.length > 0) {
      console.log('\n⚠️ Π˜ΡΡ‚Π΅ΠΊΠ°ΡŽΡ‚ Π² блиТайшиС 30 Π΄Π½Π΅ΠΉ:');
      expiringSoon.forEach(cert => {
        console.log(`   ${cert.name} (${cert.number}) - истСкаСт ${cert.expire_date}`);
      });
    }

    return {
      total: allCertificates.length,
      byStatus: statusGroups,
      expiringSoon: expiringSoon.length
    };

  } catch (error) {
    console.error('❌ Ошибка ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° сСртификатов:', error);
  }
};

⚠️ Π’Π°ΠΆΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…

getProductCertificationList (v1) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ 14 апрСля 2025 Π³ΠΎΠ΄Π°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ getProductCertificationListV2 для получСния списка ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ.

⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ особСнности

πŸ“„ Π€Π°ΠΉΠ»Ρ‹ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹: PDF, JPG
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ base64
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° вирусы ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²

πŸ“„ ΠŸΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡ ΠΈ Π»ΠΈΠΌΠΈΡ‚Ρ‹

  • Бписок сСртификатов: 1-1000 элСмСнтов
  • Бписок ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ: 1-1000 элСмСнтов
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Π°Ρ привязка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ частотС запросов

πŸ”„ Бтатусы сСртификатов

  • ACTIVE - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
  • PENDING - Π½Π° ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΠΈ
  • REJECTED - Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ исправлСния
  • EXPIRED - истСк срок дСйствия
  • DRAFT - Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΡŽ

πŸ’‘ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

  • ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сроков дСйствия
  • Аналитика статусов ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ
  • ΠŸΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½Ρ‹Π΅ обновлСния
  • Автоматизация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚Π°