@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
TypeScript
/**
* @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;