UNPKG

@selfcommunity/api-services

Version:
123 lines (115 loc) 5.52 kB
import { SCPrizeType, SCPrizeUserStatusType, SCPrizeUserType } from '@selfcommunity/types'; import { SCPaginatedResponse, LoyaltyPrizeParams, LoyaltyGetPrizeParams } from '../../types'; import { AxiosRequestConfig } from 'axios'; export interface LoyaltyApiClientInterface { getPrizes(params?: LoyaltyGetPrizeParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeType>>; createPrize(data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; getSpecificPrize(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeType>; updatePrize(id: number | string, data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; patchPrize(id: number | string, data?: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; getAllPrizeRequests(config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeUserType>>; createPrizeRequest(prize: number, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; getSpecificPrizeRequest(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; patchPrizeRequest(id: number | string, status?: SCPrizeUserStatusType, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; } /** * Contains all the endpoints needed to manage loyalty program. */ export declare class LoyaltyApiClient { /** * This endpoint retrieves all prizes. * @param params * @param config */ static getPrizes(params?: LoyaltyGetPrizeParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeType>>; /** * This endpoint creates a prize. * @param data * @param config */ static createPrize(data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; /** * This endpoint retrieves a specific prize * @param id * @param config */ static getSpecificPrize(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeType>; /** * This endpoint updates a specific prize. * @param id * @param data * @param config */ static updatePrize(id: number | string, data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; /** * This endpoint patches a specific prize. * @param id * @param data * @param config */ static patchPrize(id: number | string, data?: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; /** * This endpoint retrieves all requests of loyalty prizes. * @param config */ static getAllPrizeRequests(config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeUserType>>; /** * This endpoint creates a request for a loyalty prize * @param prize * @param config */ static createPrizeRequest(prize: number, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; /** * This endpoint retrieves a specific request for a loyalty prize. * @param id * @param config */ static getSpecificPrizeRequest(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; /** * This endpoint patches a specific request for a loyalty prize. * You can use this endpoint to change status in an admin list/table interface. * @param id * @param status * @param config */ static patchPrizeRequest(id: number | string, status?: SCPrizeUserStatusType, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; } /** * :::tip Loyalty service can be used in the following way: ```jsx 1. Import the service from our library: import {LoyaltyService} from "@selfcommunity/api-services"; ``` ```jsx 2. Create a function and put the service inside it! The async function `getPrizes` will return the paginated list of available prizes. async getPrizes() { return await LoyaltyService.getPrizes(); } ``` ```jsx In case of required `params`, just add them inside the brackets. async getSpecificPrize(prizeId) { return await LoyaltyService.getSpecificPrize(prizeId); } ``` ```jsx If you need to customize the request, you can add optional config params (`AxiosRequestConfig` type). 1. Declare it(or declare them, it is possible to add multiple params) const headers = headers: {Authorization: `Bearer ${yourToken}`} 2. Add it inside the brackets and pass it to the function, as shown in the previous example! ``` ::: */ export default class LoyaltyService { static getPrizes(params?: LoyaltyGetPrizeParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeType>>; static createPrize(data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; static getSpecificPrize(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeType>; static updatePrize(id: number | string, data: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; static patchPrize(id: number | string, data?: LoyaltyPrizeParams, config?: AxiosRequestConfig): Promise<SCPrizeType>; static getAllPrizeRequests(config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCPrizeUserType>>; static createPrizeRequest(prize: number, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; static getSpecificPrizeRequest(id: number | string, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; static patchPrizeRequest(id: number | string, status?: SCPrizeUserStatusType, config?: AxiosRequestConfig): Promise<SCPrizeUserType>; }