Interacting with the Shopee Open API v2.x in your NestJS applications made easy π₯§
-
π 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
-
Install the package along with the peer dependency
npm install --save @osmangoninahid/nestjs-shopee
-
Install the package using yarn with the peer dependency
yarn add @osmangoninahid/nestjs-shopee
Your SHOPEE_HOST
, SHOPEE_PARTNER_ID
, SHOPEE_PARTNER_KEY
and SHOPEE_AUTH_REDIRECT_URL
API credentials are required into your .env
or config
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 {
// ...
}
The module exposes injectable ShopeeService
as provider
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);
}
}
Generates the authentication URL for Shopee.
- Parameters:
cancel
(optional):boolean
- Cancels the authentication process if set totrue
.
- Cancels the authentication list.
Gets the access token for the specified code and shop ID.
- Parameters:
code
:string
- Authentication code.shopId
:number
- ID of the shop.
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.
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.
Retrieves information about the shop.
- Parameters:
shopId
:number
- ID of the shop.accessToken
:string
- Access token for shop authentication.
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.
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.
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.
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.
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.
Retrieves logistic channels available for the shop.
- Parameters:
shopId
:number
- ID of the shop.accessToken
:string
- Access token for shop authentication.
Follow the instructions from the Shopee Open API Documentation for specific detail.
Contributions welcome! Read the contribution guidelines first.