TypeScript
Les types sont fournis dans index.d.ts et importables directement — aucune installation de @types/... n'est nécessaire.
import {
SpmClient,
SpmCustomers,
SpmCustomerData,
SpmEnvelope,
SpmChunkedEnvelope,
SpmHelpers,
} from '@shopimind/sdk-shopimind';
const client = SpmClient.getClient('v1', process.env.SHOPIMIND_API_KEY!);
const items: SpmCustomerData[] = [/* ... */];
const res: SpmEnvelope | SpmChunkedEnvelope =
await SpmCustomers.bulkSave(client, items, { chunk: true });
if (res.ok) {
const counts = SpmHelpers.extractCounts(res);
console.log(`${counts.sent} envoyés, ${counts.rejected} rejetés`);
}L'enveloppe typée
interface SpmEnvelope<T = unknown> {
ok: boolean;
statusCode: number;
data: T | null;
error: SpmEnvelopeError | null;
}
interface SpmEnvelopeError {
message: string;
code: string;
retryable: boolean;
attempts: number;
details?: unknown;
}Interfaces de données disponibles
SpmCustomerData, SpmCustomerAddressData, SpmBulkCustomerAddressData, SpmCustomerGroupData, SpmProductData, SpmProductCategoryData, SpmProductImageData, SpmBulkProductImageData, SpmProductManufacturerData, SpmProductVariationData, SpmBulkProductVariationData, SpmOrderData, SpmOrderProduct, SpmOrderCustomer, SpmOrderCarrierData, SpmOrderStatusData, SpmVoucherData, SpmShopConnectionData, SpmDataSourceData, SpmCreateDataSourceData, SpmEnvelope, SpmChunkedEnvelope, SpmBulkOptions, SpmRetryOptions.
Exemple typé bout en bout
import { SpmClient, SpmOrders, SpmOrderData } from '@shopimind/sdk-shopimind';
const client = SpmClient.getClient('v1', process.env.SHOPIMIND_API_KEY!, {
retry: { maxRetries: 5 },
});
const orders: SpmOrderData[] = [
{
order_id: 'ord_1',
reference: 'CMD-1',
// … champs typés, autocomplétés par votre IDE
} as SpmOrderData,
];
const res = await SpmOrders.bulkSave(client, orders, { chunk: true });
if (!res.ok) throw new Error(res.error!.message);ESM vs CommonJS
Le SDK fonctionne en import (ESM / TypeScript) comme en require (CommonJS). En TypeScript, activez esModuleInterop (par défaut dans la plupart des configs récentes).