UNPKG

@vansite/ts-sharetribe-flex-sdk

Version:

This is a TypeScript SDK for Sharetribe Flex API. It reduces the complexity of the API and provides a more user-friendly interface.

90 lines (89 loc) 3.8 kB
/** * @fileoverview Client for managing listings in the Sharetribe Integration API. * * This privileged API allows creating, updating, querying, approving, opening, and closing listings * on behalf of users — typically used by admin tools, onboarding flows, or backend services. * * @see https://www.sharetribe.com/api-reference/integration.html#listings */ import type { AxiosResponse } from "axios"; import IntegrationApi from "./index"; import { ExtraParameter, ListingsApproveParameter, ListingsCloseParameter, ListingsCreateParameter, ListingsOpenParameter, ListingsQueryParameter, ListingsResponse, ListingsShowParameter, ListingsUpdateParameter } from "../../types"; /** * Listings API client (privileged) */ declare class Listings { private readonly axios; private readonly endpoint; private readonly headers; constructor(api: IntegrationApi); /** * Fetch a single listing by ID * * @template P * @param {P & ListingsShowParameter} params * @returns {Promise<AxiosResponse<ListingsResponse<"show", P>>>} */ show<P extends ListingsShowParameter>(params: P): Promise<AxiosResponse<ListingsResponse<"show", P, { expand: true; }>>>; /** * Query listings with filters * * @template P * @param {P & ListingsQueryParameter} params * @returns {Promise<AxiosResponse<ListingsResponse<"query", P>>>} */ query<P extends ListingsQueryParameter>(params: P): Promise<AxiosResponse<ListingsResponse<"query", P>>>; /** * Create a new listing * * @template P * @template EP * @param {P & ListingsCreateParameter} params * @param {EP} [extraParams] - Optional extra parameters (e.g. `expand: true`) * @returns {Promise<AxiosResponse<ListingsResponse<"create", P, EP>>>} */ create<P extends ListingsCreateParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"create", P, EP>>>; /** * Update an existing listing * * @template P * @template EP * @param {P & ListingsUpdateParameter} params * @param {EP} [extraParams] * @returns {Promise<AxiosResponse<ListingsResponse<"update", P, EP>>>} */ update<P extends ListingsUpdateParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"update", P, EP>>>; /** * Close a listing * * @template P * @template EP * @param {P & ListingsCloseParameter} params * @param {EP} [extraParams] * @returns {Promise<AxiosResponse<ListingsResponse<"close", P, EP>>>} */ close<P extends ListingsCloseParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"close", P, EP>>>; /** * Open a previously closed listing * * @template P * @template EP * @param {P & ListingsOpenParameter} params * @param {EP} [extraParams] * @returns {Promise<AxiosResponse<ListingsResponse<"open", P, EP>>>} */ open<P extends ListingsOpenParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"open", P, EP>>>; /** * Approve a pending listing (admin only) * * @template P * @template EP * @param {P & ListingsApproveParameter} params * @param {EP} [extraParams] * @returns {Promise<AxiosResponse<ListingsResponse<"approve", P, EP>>>} */ approve<P extends ListingsApproveParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"approve", P, EP>>>; } export default Listings;