@shipengine/connect-fulfillment-provider-api
Version:
OpenAPI specification and TypeScript definitions for the Connect Fulfillment Provider API
185 lines (184 loc) • 9.33 kB
TypeScript
export type FulfillmentProviderAppMetadata = {
/** @description The id for this integration */
Id: string;
/** @description The name of this integration */
Name: string;
/** @description The specification for authorizing with this fulfillment provider */
AuthProcess: AuthSpecification;
/** @description A list of branded fulfillment providers associated with this integration */
FulfillmentProviders: FulfillmentProviderDefinition[];
};
/** @description Shipping service for a fulfillment provider */
export type FulfillmentServiceDefinition = {
/** @description This is a unique GUID identifier for this shipping service */
Id: string;
/** @description Name of the shipping service */
Name: string;
/** @description Shortened name of the shipping service */
Abbreviation: string;
/** @description Api service code used for rates and labels */
Code: string;
};
/** @description Defined metadata for a branded fulfillment provider */
export type FulfillmentProviderDefinition = {
/** @description This is a unique GUID identifier for this fulfillment provider source */
Id: string;
/** @description The branded name for this fulfillment provider @example "FBA", "Shipwore" */
Name: string;
/** @description The long text description for this fulfillment provider */
Description: string;
/** @description The list of available fulfillment services */
FulfillmentServices: FulfillmentServiceDefinition[];
/** @description Specifies connection forms */
AccountModals: {
/** @description Defines fields for registration */
RegistrationFormSchema: {
JsonSchema: object;
UiSchema: object;
};
/** @description Defines fields for changes to the connection */
SettingsFormSchema: {
JsonSchema: object;
UiSchema: object;
};
};
/** @description Images that will be used for this branded fulfillment provider */
Images: {
/** @description The full path to the logo used in modals and other areas of our platform for this fulfillment provider. Use join(__dirname, '../assets/logo.svg') @example "/dev/integration/assets/fulfillmentprovider1/logo.svg" */
LogoUrl: string;
/** @description The full path to the icon used for this fulfillment provider. Use join(__dirname, '../assets/logo.svg') @example "/dev/integration/assets/fulfillmentprovider1/icon.svg" */
IconUrl: string;
};
};
/** @description Used to specify information about an integrations authentication */
export declare class AuthSpecification {
/** @description Identify the type of Auth being used by the integration */
Identifier: AuthIdentifier;
/** @description Added to allow oauth 1.0 to work. */
access_token?: AccessToken;
/** @description Authorization: the beginning of an OAuth2.0 flow that ensures the user is logged
* in and approves access to the Resource. */
authorization?: AuthorizationConfiguration;
/** @description Request Token: server-server code for token exchange */
request_token?: RequestTokenConfiguration;
/** @description Refresh Token: server-server refresh token exchange for access token
* **NOTE: sometimes a new RT is also created** */
refresh_token?: RefreshTokenConfiguration;
/** @description Advanced configurations used for oauth 1.0 */
advanced_configuration?: Parameter[];
/** @description Connections is an optional feature that an integration may provide. A common use
* of connections is to provide the ability to connect to a sandbox or production endpoint.
* Connection name values may be accessed in a flow e.g in the request_token section, the url is
* dynamic.
*
* "url_template": "{connection_name:$.url}/access/token/request", */
connections?: ConnectionNamesConfiguration;
}
export declare class AuthIdentifier {
AuthenticationType: AuthenticationType;
Version?: string;
IsSandbox?: boolean;
}
export declare enum AuthenticationType {
OAuth = "oauth",
Basic = "basic",
ApiKey = "apikey"
}
export declare class AccessToken {
/** @description OAuth1 only. The url to obtain the temporary Access (aka Request) Token to start a flow **/
url_template: string;
}
export declare class AuthorizationConfiguration {
/** @description The url to obtain the access token using the authorization code on the backend
* @example "http://{auth_state:store_name}.store.com/admin/oauth/authorize", "http://store.com/oauth/authorize" */
url_template: string;
/** @description A list of query parameters that will be attached to the url */
query_parameters?: Parameter[];
/** @description Method to use when making the server-server code for token request @example "GET", "POST" */
method?: string;
/** @description List of parameters that are sent to the integration during the server-server
* authorization request. These are built using the content type specified in the headers array. */
body?: Parameter[];
/** @description List of headers that are sent to the integration when authorizing a token */
headers?: Parameter[];
/** @description A nonce query parameter included on the accept request, then returned and validated on the redirect request */
nonce?: NonceConfiguration;
}
export declare class Parameter {
/** @description The name of the parameter */
name: string;
/** @description The value associated with the parameter */
value: string;
}
export declare class NonceConfiguration {
name: string;
}
export declare class RequestTokenConfiguration {
/** @description The url to obtain the access token using the authorization code on the backend @example "http://{auth_state:store_name}.store.com/admin/oauth/request", "http://store.com/oauth/request" */
url_template: string;
/** @description A list of query parameters that will be attached to the url */
query_parameters?: Parameter[];
/** @description Method to use when making the server-server code for token request @example "GET", "POST" */
method?: string;
/** @description List of parameters that are sent to the integration when exchanging the code for the token. These are built using ContentType */
body?: Parameter[];
/** @description List of headers that are sent to the integration when requesting a token */
headers?: Parameter[];
/** @description Response payload parsing */
response?: ResponseTransformationConfiguration;
}
export declare class ResponseTransformationConfiguration {
/** @description JSONPath to the JSON element for access_token. */
access_token: string;
/** @description JSONPath to the JSON element for token_type */
token_type: string;
/** @description JSONPath to the JSON element for refresh_token */
refresh_token?: string;
/** @description JSONPath to the JSON element for expires_in. Mutually exclusive with expires_at */
expires_in?: string;
/** @description Configuration for parsing a date-time, when the integration is lacking expires_in.
* Mutually exclusive with expires_in.
*/
expires_at?: DateTimeConfiguration;
/** @description Optional collection of properties to include in the connection_context sent back with the auth flow result.
* Property value may be JSONPath or a string literal.
* E.g.
* "connection_context": {
* "store_id": "$.data.store_id"
* }
*/
connection_context?: MapOfStrings;
}
export declare class DateTimeConfiguration {
/** @description JSONPath to the JSON element containing the date-time */
path: string;
/** @description DateTime format string compliant with
* https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings */
date_time_format: string;
}
export type MapOfStrings = {
[key: string]: string;
};
export declare class RefreshTokenConfiguration {
/** @description The url to refresh the access token using the authorization code on the backend @example "http://{auth_state:store_name}.store.com/admin/oauth/refresh", "http://store.com/oauth/refresh" */
url_template: string;
/** @description A list of query parameters that will be attached to the url */
query_parameters?: Parameter[];
/** @description Method to use when making the server-server code for token request @example "GET", "POST" */
method?: string;
/** @description List of parameters that are sent to the integration during the server-server refresh token request. These are built using the content type specified in the headers array. */
body?: Parameter[];
/** @description List of headers that are sent to the integration when refreshing a token */
headers?: Parameter[];
/** @description Response payload parsing */
response?: ResponseTransformationConfiguration;
}
export declare class ConnectionNamesConfiguration {
/** @description A unique list of connection names that the integration supports. */
connection_names: MapOfObjects;
/** @description The connection name that will be used when none is selected. */
default_connection_name: string;
}
export type MapOfObjects = {
[key: string]: any;
};