import { InstanceResource } from './instance-resource'; import { Paginated, ListResponse, PaginatedListResponse } from './lists'; import { SigningObject } from '../signing/signing-object'; /** * Marks Resource or Entity that supports .get Verb. * @export * @interface GetEnabled * @template TResponse */ export interface GetEnabled { /** * Makes a GET call to WebApi and returns a `TResponse` back. * @returns {Promise} * * @memberOf GetEnabled */ get: () => Promise } /** * Marks Resource or Entity that supports .get verb with parameters. * @export * @interface ParametrizedGetEnabled * @template TParameters * @template TResponse */ export interface ParametrizedGetEnabled { /** * Makes a GET call to WebApi and returns a `TResponse` back. * @param {TParameters} parameters * @returns {Promise} * * @memberOf ParametrizedGetEnabled */ get: (parameters: TParameters) => Promise } /** * Marks Resource or Entity that returns InstanceResource through .withId call * @export * @interface HasInstanceResource * @template T */ export interface HasInstanceResource { /** * Get an instance resource with a given id. * note: This method does not make any calls to the WebApi by itself. * Use other methods, such as `.get()` on the returned `InstanceResource` to make the call. * @param {any} id * @returns {T} * * @memberOf HasInstanceResource */ withId: (id: any) => T } /** * Marks Resource or Entity that supports .create verb * @export * @interface CreateEnabled * @template TRequest * @template TResponse */ export interface CreateEnabled { /** * Makes a POST call to WebApi and returns a `TResponse` returned from server. * @param {TRequest} request * @returns {Promise} * * @memberOf CreateEnabled */ create: (request: TRequest) => Promise } /** * Marks Resource or Entity that supports .create verb without body payload * @export * @interface EmptyCreateEnabled * @template TResponse */ export interface EmptyCreateEnabled { /** * Makes a POST call to WebApi and returns a `TResponse` returned from server. * @returns {Promise} * * @memberOf EmptyCreateEnabled */ create: () => Promise } /** * Marks Resource or Entity that supports .update verb * @export * @interface UpdateEnabled * @template TRequest * @template TResponse */ export interface UpdateEnabled { /** * @param {TRequest} request * @returns {Promise} * * @memberOf UpdateEnabled */ update: (request: TRequest) => Promise; } /** * Marks Resource or Entity that supports .update verb without any parameters * @export * @interface EmptyUpdateEnabled * @template TResponse */ export interface EmptyUpdateEnabled { /** * @param {TResponse} request * @returns {Promise} * * @memberOf EmptyUpdateEnabled */ update: (request: TResponse) => Promise; } /** * Marks Resource or Entity that supports .delete verb * @export * @interface DeleteEnabled * @template TResponse */ export interface DeleteEnabled { /** * @returns {Promise} * * @memberOf DeleteEnabled */ delete: () => Promise; } /** * Marks Resource or Entity that supports .delete with query parameters * @export * @interface ParametrizedDeleteEnabled * @template TParameters * @template TResponse */ export interface ParametrizedDeleteEnabled { /** * @param {TParameters} * @returns {Promise} * * @memberOf ParametrizedDeleteEnabled */ delete: (parameters: TParameters) => Promise; } /** * Marks Resource or Entity that supports .list verb * @export * @interface ListEnabled * @template TItem */ export interface ListEnabled { /** * @returns {Promise>} * * @memberOf ListEnabled */ list: () => Promise>; } /** * Marks Resource or Entity that supports .list verb with parameters * @export * @interface ParametrizedListEnabled * @template TParameters * @template TItem */ export interface ParametrizedListEnabled { /** * @param {TParameters} parameters * @returns {Promise>} * * @memberOf ParametrizedListEnabled */ list: (parameters: TParameters) => Promise>; } /** * Marks Resource or Entity that supports .list verb with parameters and pagination * @export * @interface PaginatedListEnabled * @template TItem */ export interface PaginatedListEnabled { list: (parameters: Paginated) => Promise>; } /** * Marks Resource or Entity that supports .url verb * @export * @interface HasUrl */ export interface HasUrl { /** * @returns {string} * * @memberOf HasUrl */ url: () => string; } /** * Marks Resource or Entity that supports .url verb with parameters * @export * @interface HasParametrizedUrl * @template TParameters */ export interface HasParametrizedUrl { /** * @param {TParameters} parameters * @returns {string} * * @memberOf HasParametrizedUrl */ url: (parameters: TParameters) => string; } /** * Response with no body. * * @export * @interface EmptyResponse */ export interface EmptyResponse { } /** * Marks response that is signable. It has SigningObject with key signing available. * @export * @interface Signable */ export interface Signable { signing: SigningObject; } /** * Marks Resource or Entity that supports .download verb. * @interface DownloadEnabled */ export interface DownloadEnabled { /** * @returns {Promise} */ download: () => Promise; } /** * Marks Resource or Entity that supports .download verb with parameters. * @interface ParametrizedDownloadEnabled */ export interface ParametrizedDownloadEnabled { /** * @param {TParameters} parameters * @returns {Promise} */ download: (parameters: TParameters) => Promise; } /** * Marks Resource or Entity that supports .export verb. * @interface ExportEnabled */ export interface ExportEnabled { /** * @returns {Promise} */ export: () => Promise; } /** * Marks Resource or Entity that supports .export verb with parameters. * @interface ParametrizedExportEnabled */ export interface ParametrizedExportEnabled { /** * @param {TParameters} parameters * @returns {Promise} */ export: (parameters: TParameters) => Promise; }