UNPKG

@shipengine/connect-fulfillment-provider-api

Version:

OpenAPI specification and TypeScript definitions for the Connect Fulfillment Provider API

185 lines (184 loc) 9.33 kB
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; };