amazon-pa-api5-node-ts
Version:
ProductAdvertisingAPI 5.0 NodeJS SDK rewritten in TypeScript.
246 lines (245 loc) • 10.4 kB
text/typescript
/**
* Adapted to TypeScript by David A. Ball. (c) 2024.
*
* Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
import superagent from 'superagent';
export interface Stringifiable {
toString(): string;
}
/**
* @module ApiClient
* @version 1.0.0
*/
/**
* Enumeration of collection format separator strategies.
* @enum {String}
* @readonly
*/
export declare enum CollectionFormatEnum {
/**
* Comma-separated values. Value: <code>csv</code>
* @const
*/
CSV = ",",
/**
* Space-separated values. Value: <code>ssv</code>
* @const
*/
SSV = " ",
/**
* Tab-separated values. Value: <code>tsv</code>
* @const
*/
TSV = "\t",
/**
* Pipe(|)-separated values. Value: <code>pipes</code>
* @const
*/
PIPES = "|",
/**
* Native array. Value: <code>multi</code>
* @const
*/
MULTI = "multi"
}
export interface ApiResponse<T> {
data: T;
response: any;
}
/**
* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
* application to use this class directly - the *Api and model classes provide the public API for the service. The
* contents of this file should be regarded as internal but are documented for completeness.
* @alias module:ApiClient
* @class
*/
export declare class ApiClient {
/**
* The default API client implementation.
* @type {module:ApiClient}
*/
static instance: ApiClient;
/**
* The base URL against which to resolve every API call's (relative) path.
* @type {String}
* @default https://webservices.amazon.com
*/
basePath: string;
/**
* The Access Key ID which uniquely identifies you.
* @type {String}
*/
accessKey: string | null;
/**
* A key that is used in conjunction with the Access Key ID to cryptographically
* sign an API request.
* @type string
*/
secretKey: string | null;
/**
* The host that receives the Amazon Product Advertising API GenNext request.
* @type string
* @default 'webservices.amazon.com'
*/
host: string;
/**
* The service's region where the request is targeted.
* @type string
* @default 'us-east-1'
*/
region: string;
/**
* The authentication methods to be included for all API calls.
* @type {Array.<String>}
*/
authentications: {};
/**
* The default HTTP headers to be included for all API calls.
* @type {Array.<String>}
* @default {}
*/
defaultHeaders: {};
/**
* The default HTTP timeout for all API calls.
* @type {Number}
* @default 60000
*/
timeout: number;
/**
* If set to false an additional timestamp parameter is added to all API GET calls to
* prevent browser caching
* @type {Boolean}
* @default true
*/
cache: boolean;
/**
* If set to true, the client will save the cookies from each server
* response, and return them in the next request.
* @default false
*/
enableCookies: boolean;
requestAgent: {
'User-Agent': string;
};
agent: any;
/**
* Returns a string representation for an actual parameter.
* @param param The actual parameter.
* @returns {String} The string representation of <code>param</code>.
*/
paramToString(param: string | Stringifiable | Date | undefined | null): string;
/**
* Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
* NOTE: query parameters are not handled here.
* @param {String} path The path to append to the base URL.
* @param {Object} pathParams The parameter values to append.
* @returns {String} The encoded path with parameter values substituted.
*/
buildUrl(path: string, pathParams: Record<string, any>): string;
/**
* Checks whether the given content type represents JSON.<br>
* JSON content type examples:<br>
* <ul>
* <li>application/json</li>
* <li>application/json; charset=UTF8</li>
* <li>APPLICATION/JSON</li>
* </ul>
* @param {String} contentType The MIME content type to check.
* @returns {Boolean} <code>true</code> if <code>contentType</code> represents JSON, otherwise <code>false</code>.
*/
isJsonMime(contentType: string): boolean;
/**
* Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
* @param {Array.<String>} contentTypes
* @returns {String} The chosen content type, preferring JSON.
*/
jsonPreferredMime(contentTypes: string[]): string;
/**
* Checks whether the given parameter value represents file-like content.
* @param param The parameter to check.
* @returns {Boolean} <code>true</code> if <code>param</code> represents a file.
*/
isFileParam(param: any): boolean;
/**
* Normalizes parameter values:
* <ul>
* <li>remove nils</li>
* <li>keep files and arrays</li>
* <li>format to string with `paramToString` for other cases</li>
* </ul>
* @param {Object.<String, Object>} params The parameters as object properties.
* @returns {Object.<String, Object>} normalized parameters.
*/
normalizeParams(params: Record<string, any>): Record<string, any>;
/**
* Builds a string representation of an array-type actual parameter, according to the given collection format.
* @param {Array} param An array parameter.
* @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
* @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
* <code>param</code> as is if <code>collectionFormat</code> is <code>multi</code>.
*/
buildCollectionParam(param: any[], collectionFormat: CollectionFormatEnum): string | string[] | null;
/**
* Deserializes an HTTP response body into a value of the specified type.
* @param {Object} response A SuperAgent response object.
* @param {(String|Array.<String>|Object.<String, Object>|Function)} returnType The type to return. Pass a string for simple types
* or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
* return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
* all properties on <code>data<code> will be converted to this type.
* @returns A value of the specified type.
*/
deserialize(response: superagent.Response, returnType: string | string[] | any | any[]): any;
/**
* Invokes the REST service using the supplied settings and parameters.
* @param {String} path The base URL to invoke.
* @param {String} httpMethod The HTTP method to use.
* @param {String} apiName
* @param {Object.<String, String>} pathParams A map of path parameters and their values.
* @param {Object.<String, Object>} queryParams A map of query parameters and their values.
* @param {Object.<String, Object>} collectionQueryParams A map of collection query parameters and their values.
* @param {Object.<String, Object>} headerParams A map of header parameters and their values.
* @param {Object.<String, Object>} formParams A map of form parameters and their values.
* @param {Object} bodyParam The value to pass as the request body.
* @param {Array.<String>} authNames An array of authentication type names.
* @param {Array.<String>} contentTypes An array of request MIME types.
* @param {Array.<String>} accepts An array of acceptable response MIME types.
* @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
* constructor for a complex type.
* @returns {Promise} A {@link https://www.promisejs.org/|Promise} object.
*/
callApi<T>(path: string, httpMethod: string, apiName: string, pathParams: Record<string, string>, queryParams: Record<string, any>, collectionQueryParams: Record<string, any>, headerParams: Record<string, any>, formParams: Record<string, any>, bodyParam: any, authNames: string[], contentTypes: string[], accepts: string[], returnType: string | string[] | any | any[]): Promise<ApiResponse<T>>;
/**
* Parses an ISO-8601 string representation of a date value.
* @param {String} str The date value as a string.
* @returns {Date} The parsed date object.
*/
static parseDate(str: string): Date;
/**
* Converts a value to the specified type.
* @param {(String|Object)} data The data to convert, as a string or object.
* @param {(String|Array.<String>|Object.<String, Object>|Function)} type The type to return. Pass a string for simple types
* or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
* return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
* all properties on <code>data<code> will be converted to this type.
* @returns An instance of the specified type or null or undefined if data is null or undefined.
*/
static convertToType(data: string | any | any[], type: string | string[] | any | any[]): any;
/**
* Constructs a new map or array model from REST data.
* @param data {Object|Array} The REST data.
* @param obj {Object|Array} The target object or array.
*/
static constructFromObject(data: any | any[], obj: any | any[], itemType: string | string[] | any | any[]): void;
}