@selfcommunity/api-services
Version:
Client api for SelfCommunity.
123 lines (115 loc) • 5.52 kB
TypeScript
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>;
}