@osmangoninahid/nestjs-shopee
v1.0.2
Published
NestJS npm package for Shopee
Downloads
2
Readme
@osmangoninahid/nestjs-shopee
Interacting with the Shopee Open API v2.x in your NestJS applications made easy 🥧
Features
💉 Injectable Shopee Service/Client for interacting with the Shopee API in Controllers and Providers
🔒 Shopee Authentication & Authorization
🔒 Shopee Store Management
🔒 Shopee Order & Shipping Management (Order list, detail, ship, cancellation)
🔒 Shopee Product and Inventory Management
Getting Started
Install
NPM
Install the package along with the peer dependency
npm install --save @osmangoninahid/nestjs-shopee
YARN
Install the package using yarn with the peer dependency
yarn add @osmangoninahid/nestjs-shopee
Configuration
Your SHOPEE_HOST, SHOPEE_PARTNER_ID, SHOPEE_PARTNER_KEY and SHOPEE_AUTH_REDIRECT_URL API credentials are required into your .env or config
Import
Import and add ShopeeModule to the imports section of the consuming module (most likely AppModule).
import { ShopeeModule } from '@osmangoninahid/nestjs-shopee';
@Module({
imports: [
ShopeeModule.register({
host: 'SHOPEE_HOST',
partnerId: 'SHOPEE_PARTNER_ID',
partnerKey: 'SHOPEE_PARTNER_KEY',
redirect: 'SHOPEE_AUTH_REDIRECT_URL',
}),
],
})
export class AppModule {
// ...
}Injectable Providers
The module exposes injectable ShopeeService as provider
Usage
import { ShopeeService } from '@osmangoninahid/nestjs-shopee';
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
constructor(private readonly shopeeService: ShopeeService) {}
getShop(shopId: number, accessToken: string): any {
return this.shopeeService.getShopInfo(shopId, accessToken);
}
}or
import { ShopeeService } from '@osmangoninahid/nestjs-shopee';
@Controller()
export class AppController {
constructor(private readonly shopeeService: ShopeeService) {}
@Get()
getHello(): any {
const shopId: number = 123;
const accesstoken: string = 'xyz';
return this.evalyService.authenticate(shopId, accesstoken);
}
}API
Authentication
generateAuthUrl(cancel?: boolean): ShopeeAuthResponseDto
Generates the authentication URL for Shopee.
- Parameters:
cancel(optional):boolean- Cancels the authentication process if set totrue.
cancelAuthList(): string
- Cancels the authentication list.
getAccessToken(code: string, shopId: number): Promise<any>
Gets the access token for the specified code and shop ID.
- Parameters:
code:string- Authentication code.shopId:number- ID of the shop.
refreshAccessToken(refreshToken: string, shopId: number): Promise<any>
Refreshes the access token using the refresh token and shop ID.
- Parameters:
refreshToken:string- Refresh token for authentication renewal.shopId:number- ID of the shop.
Shop Management
getShopsByPartner(pageSize?: number, pageNo?: number): Promise<any>
Retrieve shops associated with the partner.
- Parameters:
pageSize(optional):number- Number of shops per page.pageNo(optional):number- Page number.
initializeShop(shopId: number, accessToken: string, onRefreshAccessToken?: () => Promise<string>): void
Initializes the shop with the provided ID and access token.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.onRefreshAccessToken(optional):() => Promise<string>- Function to refresh access token.
getShopInfo(shopId: number, accessToken: string): Promise<any>
Retrieves information about the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.
getShopProfile(shopId: number, accessToken: string): Promise<any>
Retrieves the profile of the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.
updateShopProfile(shopId: number, accessToken: string, updateDto: ShopeeStoreUpdateDto): Promise<any>
Updates the profile of the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.updateDto:ShopeeStoreUpdateDto- Updated store information.
uploadImageToMediaSpace(shopId: number, accessToken: string, data: any, headers?: any): Promise<any>
Uploads an image to the shop's media space.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.data:any- Image data to be uploaded.headers(optional):any- Additional headers for the upload.
Order & Shipping Management
getShopOrders(shopId: number, accessToken: string, params?: any): Promise<ShopeeApiResponseDto>
Retrieve orders for the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.params(optional):any- Additional parameters for filtering orders.
getShopOrderDetail(shopId: number, accessToken: string, orderSnList: string[], responseOptionalFields?: string[]): Promise<ShopeeApiResponseDto>
Retrieves detailed information about specific shop orders.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderSnList:string[]- List of order serial numbers.responseOptionalFields(optional):string[]- Optional fields to include in the response.
cancelShopOrder(shopId: number, accessToken: string, orderSn: string, cancelReason: string, itemList?: any[]): Promise<ShopeeApiResponseDto>
Cancels a shop order.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderSn:string- Serial number of the order to be canceled.cancelReason:string- Reason for cancellation.itemList(optional):any[]- List of items to be canceled.
getShopOrderShipments(shopId: number, accessToken: string, params?: any): Promise<ShopeeApiResponseDto>
Retrieves shipment details for shop orders.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.params(optional):any- Additional parameters for filtering shipments.
getShippingParameters(shopId: number, accessToken: string, orderSn: string): Promise<ShopeeApiResponseDto>
Retrieves shipping parameters for a specific order.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderSn:string- Serial number of the order.
shipOrder(shopId: number, accessToken: string, orderSn: string, packageNumber: string, pickup: any, dropOff: any): Promise<ShopeeApiResponseDto>
Initiates shipping for an order.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderSn:string- Serial number of the order to be shipped.packageNumber:string- Package number for tracking.pickup:any- Details about pickup.dropOff:any- Details about drop-off.
updateShipOrder(shopId: number, accessToken: string, orderSn: string, packageNumber: string, pickup: any): Promise<ShopeeApiResponseDto>
Updates shipping details for an order.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderSn:string- Serial number of the order.packageNumber:string- Package number for tracking.pickup:any- Updated pickup details.
batchShipOrder(shopId: number, accessToken: string, orderList: any[]): Promise<ShopeeApiResponseDto>
Processes batch shipping for multiple orders.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.orderList:any[]- List of orders to be shipped in a batch.
Product and Inventory
createProduct(shopId: number, accessToken: string, params: any): Promise<any>
Creates a new product in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.params:any- Parameters for creating the product.
updateProduct(shopId: number, accessToken: string, params: any): Promise<ShopeeApiResponseDto>
Updates an existing product in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.params:any- Parameters for updating the product.
getCategories(shopId: number, accessToken: string, params?: any): Promise<ShopeeApiResponseDto>
Retrieves categories for products in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.params(optional):any- Additional parameters for filtering categories.
getCategoryAttributes(shopId: number, accessToken: string, categoryId: number, language?: string): Promise<ShopeeApiResponseDto>
Retrieve attributes of a specific category in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.categoryId:number- ID of the category.language(optional):string- Language code for the attributes.
getBrandsByCategory(shopId: number, accessToken: string, categoryId: number, status: number, pageSize: number, offset?: number): Promise<ShopeeApiResponseDto>
Retrieve brands associated with a specific category in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.categoryId:number- ID of the category.status:number- Status of the brands.pageSize:number- Number of brands per page.offset(optional):number- Offset for pagination.
getProductList(shopId: number, accessToken: string, pageSize: number, offset: number, status: ITEM_STATUS[], updateTimeFrom?: number, updateTimeTo?: number): Promise<ShopeeApiResponseDto>
Retrieves a list of products in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.pageSize:number- Number of products per page.offset:number- Offset for pagination.status:ITEM_STATUS[]- Status of the products.updateTimeFrom(optional):number- Timestamp for filtering products updated from this time.updateTimeTo(optional):number- Timestamp for filtering products updated to this time.
getProductBaseInfo(shopId: number, accessToken: string, productIds: number[]): Promise<ShopeeApiResponseDto>
Retrieves basic information for specified products in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productIds:number[]- IDs of the products to retrieve information for.
getProductExtraInfo(shopId: number, accessToken: string, productIds: number[]): Promise<ShopeeApiResponseDto>
Retrieves additional information for specified products in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productIds:number[]- IDs of the products to retrieve additional information for.
getProductModels(shopId: number, accessToken: string, productId: number): Promise<ShopeeApiResponseDto>
Retrieve models of a specific product in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productId:number- ID of the product to retrieve models for.
updateProductPrice(shopId: number, accessToken: string, productId: number, priceList: { model_id?: number; original_price: number }[]): Promise<ShopeeApiResponseDto>
Updates the prices of product models in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productId:number- ID of the product to update prices for.priceList:{ model_id?: number; original_price: number }[]- List of model IDs and corresponding prices to be updated.
updateProductStock(shopId: number, accessToken: string, productId: number, stockList: { model_id?: number; normal_stock: number }[]): Promise<ShopeeApiResponseDto>
Updates the stock of product models in the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productId:number- ID of the product to update stock for.stockList:{ model_id?: number; normal_stock: number }[]- List of model IDs and corresponding stock quantities to be updated.
initProductTier(shopId: number, accessToken: string, productId: number, tierVariations: { name?: number; option_list: { option: string; image: { image_id: string } }[] }[], model: { tier_index: number[]; normal_stock: number; original_price: number; model_sku: string }[]): Promise<ShopeeApiResponseDto>
Initializes product tier information with variations and models.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productId:number- ID of the product to initialize tier information for.tierVariations:{ name?: number; option_list: { option: string; image: { image_id: string } }[] }[]- List of tier variations with options and images.model:{ tier_index: number[]; normal_stock: number; original_price: number; model_sku: string }[]- List of models with tier indices, stock, prices, and SKU.
delistProduct(shopId: number, accessToken: string, productList: { item_id: number; unlist: boolean }[]): Promise<ShopeeApiResponseDto>
Unlists or delists products from the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.productList:{ item_id: number; unlist: boolean }[]- List of product IDs and unlist boolean values.
getLogisticChannels(shopId: number, accessToken: string): Promise<any>
Retrieves logistic channels available for the shop.
- Parameters:
shopId:number- ID of the shop.accessToken:string- Access token for shop authentication.
Confusion???
Follow the instructions from the Shopee Open API Documentation for specific detail.
Contribute
Contributions welcome! Read the contribution guidelines first.
