shopify-api-node-interface
Version:
Typescript interface declarations for the official shopify-api-node module
1,681 lines (1,555 loc) • 57.9 kB
TypeScript
// Type definitions for shopify-api-node 2.10.0
// Project: shopify-api-node
// Definitions by: Rich Buggy <rich@buggy.id.au>
/*~ This is the module template file for class modules.
*~ You should rename it to index.d.ts and place it in a folder with the same name as the module.
*~ For example, if you were writing a file for "super-greeter", this
*~ file should be 'super-greeter/index.d.ts'
*/
/*~ Note that ES6 modules cannot directly export class objects.
*~ This file should be imported using the CommonJS-style:
*~ import x = require('someLibrary');
*~
*~ Refer to the documentation to understand common
*~ workarounds for this limitation of ES6 modules.
*/
/*~ This declaration specifies that the class constructor function
*~ is the exported object from the file
*/
export = Shopify;
/*~ Write your module's methods and properties in this class */
type onCallLimitsFn = (limits: Shopify.ICallLimits) => void;
declare class Shopify {
constructor(config: Shopify.IPublicShopifyConfig | Shopify.IPrivateShopifyConfig);
callLimits: Shopify.ICallLimits;
accessScope: {
list: () => Promise<Shopify.IAccessScope[]>;
};
apiPermission: {
delete: () => Promise<void>;
};
// abandonedCheckouts
applicationCharge: {
activate: (id: number, params?: any) => Promise<Shopify.IApplicationCharge>;
create: (params: Shopify.ICreateApplicationCharge) => Promise<Shopify.IApplicationCharge>;
get: (id: number, params?: any) => Promise<Shopify.IApplicationCharge>;
list: (params?: any) => Promise<Shopify.IApplicationCharge[]>;
};
applicationCredit: {
create: (params: Shopify.ICreateApplicationCredit) => Promise<Shopify.IApplicationCredit>;
get: (id: number, params?: any) => Promise<Shopify.IApplicationCredit>;
list: (params?: any) => Promise<Shopify.IApplicationCredit[]>;
};
article: {
authors: () => Promise<string[]>;
count: (blogId: number, params?: any) => Promise<number>;
create: (blogId: number, params: Shopify.ICreateArticle) => Promise<Shopify.IArticle>;
delete: (blogId: number, id: number) => Promise<void>;
get: (blogId: number, id: number, params?: any) => Promise<Shopify.IArticle>;
list: (blogId: number, params?: any) => Promise<Shopify.IArticle[]>;
tags: (blogId?: number, params?: any) => Promise<string[]>;
update: (blogId: number, id: number, params: Shopify.IUpdateArticle) => Promise<Shopify.IArticle>;
};
asset: {
create: (themeId: number, params: any) => Promise<Shopify.IAsset>;
delete: (themeId: number, params: any) => Promise<void>;
get: (themeId: number, params?: any) => Promise<Shopify.IAsset>;
list: (themeId: number, params?: any) => Promise<Shopify.IAsset[]>;
update: (themeId: number, params: Shopify.IUpdateArticle) => Promise<Shopify.IAsset>;
};
blog: {
count: () => Promise<number>;
create: (params: Shopify.ICreateBlog) => Promise<Shopify.IBlog>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IBlog>;
list: (params?: any) => Promise<Shopify.IBlog[]>;
update: (id: number, params: any) => Promise<Shopify.IBlog>;
};
carrierService: {
create: (params: Shopify.ICreateCarrierService) => Promise<Shopify.ICarrierService>;
delete: (id: number) => Promise<void>;
get: (id: number) => Promise<Shopify.ICarrierService>;
list: () => Promise<Shopify.ICarrierService[]>;
update: (id: number, params: Shopify.IUpdateCarrierService) => Promise<Shopify.ICarrierService>;
};
checkout: {
complete: (token: string) => Promise<any>;
count: (params?: any) => Promise<number>;
create: (params?: any) => Promise<Shopify.ICheckout>;
get: (token: string) => Promise<Shopify.ICheckout>;
list: (params?: any) => Promise<Shopify.ICheckout[]>;
shippingRates: (token: string) => Promise<any>;
update: (token: any, params: any) => Promise<Shopify.ICheckout>;
};
collect: {
count: (params?: any) => Promise<number>;
create: (params: Shopify.ICreateCollect) => Promise<Shopify.ICollect>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ICollect>;
list: (params?: any) => Promise<Shopify.ICollect[]>;
};
collectionListing: {
get: (id: number, params?: any) => Promise<Shopify.ICollectionListing>;
list: (params?: any) => Promise<Shopify.ICollectionListing[]>;
productIds: (id: number) => Promise<any>;
};
comment: {
approve: (id: number) => Promise<Shopify.IComment>;
count: (params?: any) => Promise<number>;
create: (params: Shopify.ICreateComment) => Promise<Shopify.IComment>;
get: (id: number, params?: any) => Promise<Shopify.IComment>;
list: (params?: any) => Promise<Shopify.IComment[]>;
notSpam: (id: number) => Promise<Shopify.IComment>;
remove: (id: number) => Promise<Shopify.IComment>;
restore: (id: number) => Promise<Shopify.IComment>;
spam: (id: number) => Promise<Shopify.IComment>;
update: (id: number, params: Shopify.IUpdateComment) => Promise<Shopify.IComment>;
};
country: {
count: () => Promise<number>;
create: (params: Shopify.ICreateCountry) => Promise<Shopify.ICountry>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ICountry>;
list: (params?: any) => Promise<Shopify.ICountry[]>;
update: (id: number, params: Shopify.IUpdateCountry) => Promise<Shopify.ICountry>;
};
customCollection: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.ICustomCollection>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ICustomCollection>;
list: (params?: any) => Promise<Shopify.ICustomCollection[]>;
update: (id: number, params: any) => Promise<Shopify.ICustomCollection>;
};
customer: {
accountActivationUrl: (id: number) => Promise<any>;
count: () => Promise<number>;
create: (params: any) => Promise<Shopify.ICustomer>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ICustomer>;
list: (params: any) => Promise<Shopify.ICustomer[]>;
search: (params: any) => Promise<any>;
update: (id: number, params: any) => Promise<Shopify.ICustomer>;
};
customerAddress: {
create: (customerId: number, params: any) => Promise<Shopify.ICustomerAddress>;
default: (customerId: number, id: number) => Promise<Shopify.ICustomerAddress>;
delete: (customerId: number, id: number) => Promise<void>;
get: (customerId: number, id: number) => Promise<Shopify.ICustomerAddress>;
list: (customerId: number, params?: any) => Promise<Shopify.ICustomerAddress[]>;
set: (customerId: number, params: any) => Promise<any>;
update: (customerId: number, id: number, params: any) => Promise<Shopify.ICustomerAddress>;
};
customerSavedSearch: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.ICustomerSavedSearch>;
customers: (id: number, params?: any) => Promise<any>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ICustomerSavedSearch>;
list: (params?: any) => Promise<Shopify.ICustomerSavedSearch[]>;
update: (id: number, params: any) => Promise<Shopify.ICustomerSavedSearch>;
};
discountCode: {
create: (params: any) => Promise<Shopify.IDiscountCode>;
delete: (id: number) => Promise<void>;
disable: (id: number) => Promise<Shopify.IDiscountCode>;
enable: (id: number) => Promise<Shopify.IDiscountCode>;
get: (id: number) => Promise<Shopify.IDiscountCode>;
list: (params?: any) => Promise<Shopify.IDiscountCode[]>;
};
draftOrder: {
complete: (id: number, params?: any) => Promise<Shopify.IDraftOrder>;
count: () => Promise<number>;
create: (params: any) => Promise<Shopify.IDraftOrder>;
delete: (id: number) => Promise<void>;
get: (id: number) => Promise<Shopify.IDraftOrder>;
list: (params?: any) => Promise<Shopify.IDraftOrder[]>;
sendInvoice: (id: number, params?: any) => Promise<any>;
update: (id: number, params?: any) => Promise<Shopify.IDraftOrder>;
};
event: {
count: (params?: any) => Promise<number>;
get: (id: number, params?: any) => Promise<Shopify.IEvent>;
list: (params?: any) => Promise<Shopify.IEvent[]>;
};
fulfillment: {
cancel: (orderId: number, id: number) => Promise<Shopify.IFulfillment>;
complete: (orderId: number, id: number) => Promise<Shopify.IFulfillment>;
count: (orderId: number, params?: any) => Promise<number>;
create: (orderId: number, params: any) => Promise<Shopify.IFulfillment>;
get: (orderId: number, id: number, params?: any) => Promise<Shopify.IFulfillment>;
list: (orderId: number, params?: any) => Promise<Shopify.IFulfillment[]>;
open: (orderId: number, id: number) => Promise<Shopify.IFulfillment>;
update: (orderId: number, id: number, params: any) => Promise<Shopify.IFulfillment>;
};
fulfillmentEvent: {
create: (orderId: number, fulfillmentId: number, params: any) => Promise<Shopify.IFulfillmentEvent>;
delete: (orderId: number, fulfillmentId: number, id: number) => Promise<void>;
get: (orderId: number, fulfillmentId: number, id: number) => Promise<Shopify.IFulfillmentEvent>;
list: (orderId: number, fulfillmentId: number, params?: any) => Promise<Shopify.IFulfillmentEvent[]>;
update: (orderId: number, fulfillmentId: number, id: number, params: any) => Promise<Shopify.IFulfillmentEvent>;
};
fulfillmentService: {
create: (params: any) => Promise<Shopify.IFulfillmentService>;
delete: (id: number) => Promise<void>;
get: (id: number) => Promise<Shopify.IFulfillmentService>;
list: (params?: any) => Promise<Shopify.IFulfillmentService[]>;
update: (id: number, params: any) => Promise<Shopify.IFulfillmentService>;
};
giftCard: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IGiftCard>;
disable: (id: number) => Promise<any>;
get: (id: number) => Promise<Shopify.IGiftCard>;
list: (params?: any) => Promise<Shopify.IGiftCard[]>;
search: (params: any) => Promise<any>;
update: (id: number, params: any) => Promise<Shopify.IGiftCard>;
};
location: {
get: (id: number) => Promise<Shopify.ILocation>;
list: () => Promise<Shopify.ILocation[]>;
};
marketingEvent: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IMarketingEvent>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IMarketingEvent>;
list: (params?: any) => Promise<Shopify.IMarketingEvent[]>;
update: (id: number, params: any) => Promise<Shopify.IMarketingEvent>;
engagements: (id: number, params: any) => Promise<any>;
};
metafield: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IMetafield>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IMetafield>;
list: (params?: any) => Promise<Shopify.IMetafield[]>;
update: (id: number, params: any) => Promise<Shopify.IMetafield>;
};
on: (event: "callLimits", callback: onCallLimitsFn) => Shopify;
order: {
cancel: (id: number, params?: any) => Promise<Shopify.IOrder>;
close: (id: number) => Promise<Shopify.IOrder>;
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IOrder>;
delete: (id: number) => Promise<any>;
get: (id: number, params?: any) => Promise<Shopify.IOrder>;
list: (params?: any) => Promise<Shopify.IOrder[]>;
open: (id: number) => Promise<Shopify.IOrder>;
update: (id: number, params: any) => Promise<Shopify.IOrder>;
};
orderRisk: {
create: (orderId: number, params: any) => Promise<Shopify.IOrderRisk>;
delete: (orderId: number, id: number) => Promise<void>;
get: (orderId: number, id: number) => Promise<Shopify.IOrderRisk>;
list: (orderId: number) => Promise<Shopify.IOrderRisk[]>;
update: (orderId: number, id: number, params: any) => Promise<Shopify.IOrderRisk>;
};
page: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IPage>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IPage>;
list: (params?: any) => Promise<Shopify.IPage[]>;
update: (id: number, params: any) => Promise<Shopify.IPage>;
};
payment: {
count: (checkoutToken: any) => Promise<number>;
create: (checkoutToken: any, params: any) => Promise<any>;
get: (checkoutToken: any, id: number) => Promise<any>;
list: (checkoutToken?: any) => Promise<any>;
};
policy: {
list: (params?: any) => Promise<Shopify.IPolicy[]>;
};
priceRule: {
create: (params: any) => Promise<Shopify.IPriceRule>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IPriceRule>;
list: (params?: any) => Promise<Shopify.IPriceRule[]>;
update: (id: number, params: any) => Promise<Shopify.IPriceRule>;
};
product: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.IProduct>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IProduct>;
list: (params?: any) => Promise<Shopify.IProduct[]>;
update: (id: number, params: any) => Promise<Shopify.IProduct>;
};
productImage: {
count: (productId: number, params?: any) => Promise<number>;
create: (productId: number, params: any) => Promise<Shopify.IProductImage>;
delete: (productId: number, id: number) => Promise<void>;
get: (productId: number, id: number, params?: any) => Promise<Shopify.IProductImage>;
list: (productId: number, params?: any) => Promise<Shopify.IProductImage[]>;
update: (productId: number, id: number, params: any) => Promise<Shopify.IProductImage>;
};
productListing: {
count: () => Promise<number>;
create: (productId: number, params: any) => Promise<Shopify.IProductListing>;
delete: (productId: number) => Promise<void>;
get: (productId: number) => Promise<Shopify.IProductListing>;
list: (params?: any) => Promise<Shopify.IProductListing[]>;
productIds: (params?: any) => Promise<any>;
};
productVariant: {
count: (productId: number) => Promise<number>;
create: (productId: number, params: any) => Promise<Shopify.IProductVariant>;
delete: (productId: number, id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IProductVariant>;
list: (productId: number, params?: any) => Promise<Shopify.IProductVariant[]>;
update: (id: number, params: any) => Promise<Shopify.IProductVariant>;
};
province: {
count: (countryId: number, params?: any) => Promise<number>;
get: (countryId: number, id: number, params?: any) => Promise<Shopify.IProvince>;
list: (countryId: number, params?: any) => Promise<Shopify.IProvince[]>;
update: (countryId: number, id: number, params: any) => Promise<Shopify.IProvince>;
};
recurringApplicationCharge: {
activate: (id: number, params: any) => Promise<Shopify.IRecurringApplicationCharge>;
create: (params: Shopify.ICreateRecurringApplicationCharge) => Promise<Shopify.IRecurringApplicationCharge>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IRecurringApplicationCharge>;
list: (params?: any) => Promise<Shopify.IRecurringApplicationCharge[]>;
};
redirect: {
count: (params?: any) => Promise<number>;
create: (params: Shopify.ICreateRedirect) => Promise<Shopify.IRedirect>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IRedirect>;
list: (params?: any) => Promise<Shopify.IRedirect[]>;
update: (id: number, params: Shopify.IUpdateRedirect) => Promise<Shopify.IRedirect>;
};
refund: {
calculate: (orderId: number, params: any) => Promise<any>;
create: (orderId: number, params: any) => Promise<Shopify.IRefund>;
get: (orderId: number, id: number, params?: any) => Promise<Shopify.IRefund>;
list: (orderId: number, params?: any) => Promise<Shopify.IRefund[]>;
};
report: {
create: (params: any) => Promise<Shopify.IReport>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IReport>;
list: (params?: any) => Promise<Shopify.IReport[]>;
update: (id: number, params: any) => Promise<Shopify.IReport>;
};
resourceFeedback: {
create: (params: any) => Promise<Shopify.IResourceFeedback>;
list: () => Promise<Shopify.IResourceFeedback[]>;
}
scriptTag: {
count: (params?: any) => Promise<number>;
create: (params: Shopify.ICreateScriptTag) => Promise<Shopify.IScriptTag>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IScriptTag>;
list: (params?: any) => Promise<Shopify.IScriptTag[]>;
update: (id: number, params: Shopify.IUpdateScriptTag) => Promise<Shopify.IScriptTag>;
};
shippingZone: {
list: (params?: any) => Promise<Shopify.IShippingZone[]>;
};
shop: {
get: (params?: any) => Promise<Shopify.IShop>;
};
smartCollection: {
count: (params?: any) => Promise<number>;
create: (params: any) => Promise<Shopify.ISmartCollection>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.ISmartCollection>;
list: (params?: any) => Promise<Shopify.ISmartCollection[]>;
order: (id: number, params: any) => Promise<void>;
update: (id: number, params: any) => Promise<Shopify.ISmartCollection>;
};
theme: {
create: (params: any) => Promise<Shopify.ITheme>;
delete: (id: number) => Promise<void>;
get: (id: number, params: any) => Promise<Shopify.ITheme>;
list: (params?: any) => Promise<Shopify.ITheme[]>;
update: (id: number, params: any) => Promise<Shopify.ITheme>;
};
transaction: {
count: (orderId: number) => Promise<number>;
create: (orderId: number, params: any) => Promise<Shopify.ITransaction>;
get: (orderId: number, id: number, params?: any) => Promise<Shopify.ITransaction>;
list: (orderId: number, params?: any) => Promise<Shopify.ITransaction[]>;
};
usageCharge: {
create: (recurringApplicationChargeId: number, params: Shopify.ICreateUsageCharge) => Promise<Shopify.IUsageCharge>;
get: (recurringApplicationChargeId: number, id: number, params?: any) => Promise<Shopify.IUsageCharge>;
list: (recurringApplicationChargeId: number, params?: any) => Promise<Shopify.IUsageCharge[]>;
};
user: {
current: () => Promise<Shopify.IUser>;
get: (id: number) => Promise<Shopify.IUser>;
list: () => Promise<Shopify.IUser[]>;
};
webhook: {
count: (params?: any) => Promise<number>;
create: (params: Shopify.ICreateWebhook) => Promise<Shopify.IWebhook>;
delete: (id: number) => Promise<void>;
get: (id: number, params?: any) => Promise<Shopify.IWebhook>;
list: (params?: any) => Promise<Shopify.IWebhook[]>;
update: (id: number, params: Shopify.IUpdateWebhook) => Promise<Shopify.IWebhook>;
};
}
/*~ If you want to expose types from your module as well, you can
*~ place them in this block.
*/
declare namespace Shopify {
export interface IAutoLimit {
bucketSize: number;
calls: number;
interval: number;
}
export interface IPublicShopifyConfig {
accessToken: string;
autoLimit?: boolean | IAutoLimit;
shopName: string;
timeout?: number;
}
export interface IPrivateShopifyConfig {
apiKey: string;
autoLimit?: boolean | IAutoLimit;
password: string;
shopName: string;
timeout?: number;
}
export interface ICallLimits {
remaining: number;
current: number;
max: number;
}
interface IAccessScope {
handle: string
}
interface ICheckout {
abandoned_checkout_url: string;
applied_discount?: ICheckoutDiscount[];
billing_address?: ICustomerAddress;
buyer_accepts_marketing: boolean;
cancel_reason?: "customer" | "fraud" | "inventory" | "other" | null;
cart_token: string;
closed_at: string | null;
completed_at: string | null;
created_at: string;
currency: string;
customer: ICustomer;
customer_locale: string;
discount_code?: string;
discount_codes?: ICheckoutDiscount[];
device_id: number | null;
email: string;
gateway: string | null;
gift_cards?: ICheckoutGiftCard;
id: number;
landing_site: string;
line_items: ICheckoutLineItem[];
location_id: number | null; // In API response but not documented
note: string | null;
note_attributes: any[];
order?: ICheckoutOrder;
payment_url?: string;
phone: string | null;
referring_site: string;
request_details?: ICheckoutRequestDetails;
requires_shipping?: boolean;
reservation_time?: number;
reservation_time_left?: number;
shipping_address: ICustomerAddress;
shipping_lines: ICheckoutShippingLine[];
shipping_rates?: ICheckoutShippingRate[];
shipping_rate?: ICheckoutShippingRate[];
source_indentifier: string | null;
source_name: string | null;
source_url: string | null;
subtotal_price: string;
tax_lines: ICheckoutTaxLine[];
taxes_included: boolean;
token: string;
total_discounts: string;
total_line_items_price: string;
total_price: string;
total_tax: string;
total_weight: number;
updated_at: string;
user_id: number | null; // In API response but not documented
web_url?: string;
}
interface ICheckoutLineItem {
applied_discounts: any[];
compare_at_price: string;
destination_location_id: number;
discount_codes: any[];
fulfillment_service: "api" | "custom" | "legacy" | "manual";
fulfillment_status?: "fulfilled" | "partial" | null;
gift_card: boolean;
grams: number;
key: string;
line_price: string;
name: string;
origin_location_id: number;
price: string;
product_id: number;
properties: any | null;
quantity: number;
requires_shipping: boolean;
sku: string;
taxable: boolean;
tax_lines: ICheckoutTaxLine[];
title: string;
variant_id: number;
variant_title: string;
vendor: string;
}
interface ICheckoutShippingLine {
api_client_id: number | null;
applied_discounts: any[];
carrier_identifier: any | null;
carrier_service_id: number | null;
code: string;
delivery_category: any | null;
id: string;
markup: string;
phone: string | null;
price: string;
requested_fulfillment_service_id: number | null;
source: string;
tax_lines: any[];
title: string;
validation_context: any | null;
}
interface ICheckoutTaxLine {
compare_at: number;
position: number;
price: string;
rate: number;
source: string;
title: string;
zone: string;
}
interface IApplicationCharge {
confirmation_url: string;
created_at: string;
id: number;
name: string;
price: string;
return_url: string;
status: "accepted" | "declined" | "expired" | "pending";
test: true | null;
updated_at: string;
}
interface ICreateApplicationCharge {
name: string;
price: string;
return_url: string;
status: "accepted" | "declined" | "expired" | "pending";
test?: true;
}
interface IApplicationCredit {
description: string;
id: number;
amount: string;
test: true | null;
}
interface ICreateApplicationCredit {
description: string;
amount: string;
test?: true;
}
interface IArticle {
author: string;
blog_id: number;
body_html: string;
created_at: string;
id: number;
handle: string;
image: IImage;
metafields: IObjectMetafield[];
published: boolean;
published_at: string;
summary_html: string | null;
tags: string;
template_suffix: string | null;
title: string;
updated_at: string;
user_id: number;
}
interface ICreateArticle {
author: string;
body_html: string;
handle?: string;
image?: IBase64Image;
metafields?: ICreateObjectMetafield[];
published?: boolean;
published_at?: string;
summary_html?: string | null;
tags?: string;
template_suffix?: string | null;
title: string;
user_id?: number;
}
interface IUpdateArticle {
author: string;
body_html: string;
handle?: string;
image?: IBase64Image;
metafields?: ICreateObjectMetafield[];
published?: boolean;
published_at?: string;
summary_html?: string | null;
tags?: string;
template_suffix?: string | null;
title: string;
user_id?: number;
}
interface IImage {
created_at: string;
height: number;
src: string;
updated_at?: string;
width: number;
}
interface IBase64Image {
attachment: string;
}
interface IObjectMetafield {
key: string;
namespace: string;
value: string | number;
value_type: "string" | "integer";
description: string | null;
}
interface ICreateObjectMetafield {
key: string;
namespace: string;
value: string | number;
value_type: "string" | "integer";
description?: string | null;
}
interface IAsset {
attachment?: string;
content_type: string;
created_at: string;
key: string;
public_url: string;
size: number;
source_key: string;
src: string;
theme_id: number;
updated_at: string;
value?: string;
}
interface IUpdateAsset {
attachment?: string;
key: string;
source_key?: string;
src?: string;
value?: string;
}
interface IBlog {
commentable: "moderate" | "no" | "yes";
created_at: string;
feedburner: string | null;
feedburner_location: string | null;
handle: string;
id: number;
metafield: IObjectMetafield[];
tags: string;
template_suffix: string | null;
title: string;
updated_at: string;
}
interface ICreateBlog {
commentable?: "moderate" | "no" | "yes";
feedburner?: string | null;
feedburner_location?: string | null;
handle?: string;
metafield?: ICreateObjectMetafield[];
tags?: string;
template_suffix?: string | null;
title: string;
}
interface ICarrierService {
active: boolean;
callback_url: string;
carrier_service_type: string; // I think this could be restricted to "api" or "legacy"
name: string;
service_discovery: boolean;
format: "json" | "xml";
}
interface ICreateCarrierService {
active?: boolean;
callback_url: string;
carrier_service_type?: string;
name: string;
service_discovery: boolean;
format?: "json" | "xml";
}
interface IUpdateCarrierService {
active?: boolean;
callback_url?: string;
carrier_service_type?: string;
name?: string;
service_discovery?: boolean;
format?: "json" | "xml";
}
interface ICheckoutDiscount {
amount: string;
applicable: boolean;
description: string;
non_applicable_reason: string;
title: string;
value: string;
value_type: "fixed_amount" | "percentage";
}
interface ICheckoutGiftCard {
amount_used: string;
balance: string;
id: string;
last_characters: string;
}
interface ICheckoutShippingRateCheckout {
subtotal_price: string;
total_price: string;
total_tax: string;
}
interface ICheckoutShippingRate {
checkout: ICheckoutShippingRateCheckout;
delivery_range: string[];
handle: string;
price: string;
requires_phone: boolean;
title: string;
}
interface ICheckoutOrder {
id: number;
name: string;
status_url: string;
}
interface ICheckoutRequestDetails {
accept_language: string;
ip_address: string;
user_agent: string;
}
interface ICollect {
collection_id: number;
created_at: string;
featured: boolean;
id: number;
position: number;
product_id: number;
sort_value: string;
updated_at: string;
}
interface ICreateCollect {
collection_id: number;
featured?: boolean;
position?: number;
product_id: number;
sort_value?: string;
}
type CollectionListingSortOrder = "alpha-asc" | "alpha-desc" | "best-selling" | "created" | "created-desc" | "manual" | "price-asc" | "price-desc";
interface ICollectionListingImage extends IImage {
position: number;
product_it: number;
variant_ids: number[];
}
interface ICollectionListing {
collection_id: string;
body_html: string;
default_product_image: ICollectionListingImage;
image: IImage;
handle: string;
published_at: string;
title: string;
sort_order: CollectionListingSortOrder;
updated_at: string;
}
type CommentStatus = "published" | "removed" | "spam" | "unapproved";
interface IComment {
article_id: number;
author: string;
blog_id: number;
body: string;
body_html: string;
created_at: string;
email: string;
id: number;
ip: string;
published_at: string;
status: CommentStatus;
updated_at: string;
user_agent: string;
}
interface ICreateComment {
article_id?: number;
author: string;
blog_id?: number;
body?: string;
body_html?: string;
email: string;
ip?: string;
published_at?: string;
status?: CommentStatus;
user_agent?: string;
}
interface IUpdateComment {
article_id?: number;
author?: string;
blog_id?: number;
body?: string;
body_html?: string;
email?: string;
ip?: string;
published_at?: string;
status?: CommentStatus;
user_agent?: string;
}
interface ICountry {
code: string;
id: number;
name: string;
provinces: IProvince[];
tax: number;
tax_name: string
}
interface ICreateCountry {
code: string;
name?: string;
tax?: number;
tax_name?: string
}
interface IUpdateCountry {
code?: string;
name?: string;
tax?: number;
tax_name?: string
}
type CustomerCollectionSortOrder = "alpha-asc" | "alpha-desc" | "best-selling" | "created" | "created-desc" | "manual" | "price-asc" | "price-desc";
interface ICustomCollection {
body_html: string | null;
handle: string;
image: IImage;
id: number;
metafield?: IObjectMetafield; // From https://help.shopify.com/api/reference/customcollection but not visible in test API call
published?: string; // From https://help.shopify.com/api/reference/customcollection but not visible in test API call
published_at: string;
published_scope: string;
sort_order: CustomerCollectionSortOrder;
template_suffix: string | null;
title: string;
updated_at: string;
}
type CustomerState = "declined" | "disabled" | "enabled" | "invited";
interface ICustomer {
accepts_marketing: boolean;
addresses?: ICustomerAddress[];
created_at: string;
default_address: string;
email: string;
first_name: string;
id: number;
last_name: string;
metafield?: IObjectMetafield; // From https://help.shopify.com/api/reference/customer but not visible in test API call
phone: string;
multipass_identifier: null;
last_order_id: number | null;
last_order_name: string | null;
note: string | null;
orders_count: number;
state: CustomerState;
tags: string;
tax_exempt: boolean;
total_spent: string;
updated_at: string;
verified_email: boolean;
}
interface ICustomerAddress {
address1: string;
address2?: string;
city: string;
company: string | null;
country: string;
country_code: string;
customer_id: number;
first_name: string;
id: number
last_name: string;
latitude: string;
longitude: string;
name: string;
phone: string | null;
province: string;
province_code: string;
zip: string;
}
interface ICustomerSavedSearch {
created_at: string;
id: number;
name: string;
query: string;
updated_at: string;
}
interface IDiscountCode {
created_at: string;
id: number;
code: string;
price_rule_id: number;
updated_at: string;
usage_count: number;
}
interface IDraftOrderNoteAttribute {
name: string;
value: string;
}
type DraftOrderDiscountValueType = "fixed_amount" | "percentage";
interface IDraftOrderDiscount {
amount: string;
description: string;
non_applicable_reason: string;
title: string;
value: string;
value_type: DraftOrderDiscountValueType;
}
type DraftOrderLineItemFulfullmentService = "api" | "custom" | "legacy" | "manual";
type DraftOrderLineItemFulfullmentStatus = "fulfilled" | "partial";
interface IDraftOrderLineItem {
applied_discounts: any[] | null;
discount_codes: any[];
fulfillment_service: DraftOrderLineItemFulfullmentService;
fulfillment_status?: DraftOrderLineItemFulfullmentStatus | null;
gift_card: boolean;
grams: number;
key: string;
line_price: string;
name: string;
origin_location_id: number;
price: string;
product_id: number;
properties: any | null;
quantity: number;
requires_shipping: boolean;
sku: string;
taxable: boolean;
tax_lines: ICheckoutTaxLine[];
title: string;
variant_id: number;
variant_title: string;
vendor: string;
}
interface IDraftOrder {
applied_discount: IDraftOrderDiscount[];
billing_address: ICustomerAddress;
completed_at: string | null;
created_at: string;
currency: string;
customer: string;
email: string;
id: number;
invoice_sent_at: string | null;
invoice_url: string;
line_items: IDraftOrderLineItem[];
name: string;
note: string;
note_attributes: IDraftOrderNoteAttribute[];
order_id: number | null;
shipping_address: ICustomerAddress;
shipping_line: string;
subtotal_price: string;
tags: string;
tax_exempt: boolean;
tax_lines: string;
taxes_included: boolean;
total_tax: string;
total_price: string;
updated_at: string;
}
interface IEvent {
arguments: any[];
author: string;
body: string | null;
created_at: string;
id: number;
description: string;
path: string;
message: string;
subject_id: number;
subject_type: "Article" | "Blog" | "Collection" | "Comment" | "Order" | "Page" | "Product" | "ApiPermission";
verb: string;
}
type IFulfillmentStatus = "cancelled" | "error" | "failure" | "open" | "pending" | "success";
interface IFulfillmentReceipt {
textcase: boolean;
authorization: string;
}
interface IFulfilmentLineItemProperty {
name: string;
value: string;
}
interface IFulfillmentLineItemTaxLine {
title: string;
price: string;
rate: number;
}
interface IFulfilmentLineItem {
id: number;
variant_id: number;
title: string;
quantity: number;
price: string;
grams: number;
sku: string;
variant_title: string;
vendor: any | null;
fulfillment_service: string;
product_id: number;
requires_shipping: boolean;
taxable: boolean;
gift_card: boolean;
name: string;
variant_inventory_management: string;
properties: IFulfilmentLineItemProperty[];
product_exists: boolean;
fulfillable_quantity: number;
total_discount: string;
fulfillment_status: IFulfillmentStatus;
tax_lines: IFulfillmentLineItemTaxLine[];
}
interface IFulfillment {
created_at: string;
id: number;
line_items: IFulfilmentLineItem[];
notify_customer: string;
order_id: number;
receipt: IFulfillmentReceipt;
service: string;
shipment_status: string | null;
status: IFulfillmentStatus;
tracking_company: string;
tracking_numbers: string[];
tracking_url: string;
tracking_urls: string[];
updated_at: string;
variant_inventory_management: string;
}
type FulfillmentEventStatus = "confirmed" | "delivered" | "failure" | "in_transit" | "out_for_delivery";
interface IFulfillmentEvent {
address1: string | null;
city: string | null;
country: string | null;
created_at: string;
estimated_delivery_at: string | null;
fulfillment_id: number;
id: number;
happened_at: string;
latitude: string | null;
longitude: string;
message: string | null;
order_id: string;
province: string | null;
shop_id: number;
status: FulfillmentEventStatus;
updated_at: string;
zip: string | null;
}
interface IFulfillmentService {
callback_url: string;
format: "json";
handle: string;
inventory_management: boolean;
name: string;
provider_id: number | null;
requires_shipping_method: boolean;
tracking_support: boolean;
}
interface IGiftCard {
id: number;
api_client_id: number;
user_id: number;
order_id: number;
customer_id: number;
line_item_id: number;
balance: string;
currency: string;
code: string;
last_characters: string;
note: string;
template_suffix: string;
created_at: string;
updated_at: string;
disabled_at: string;
expires_on: string;
}
interface ILocation {
id: number;
address1: string;
address2: string | null;
city: string;
country: string;
country_code: string;
country_name: string;
created_at: string;
deleted_at: string;
name: string;
phone: string;
province: string;
province_code: string;
updated_at: string;
zip: string;
}
interface IMarketingEventMarketedResources {
id: number;
type: "product" | "collection" | "price_rule" | "discount" | "page" | "article" | "shop";
}
type MarketingEventEventType = "ad" | "post" | "message" | "retargeting" | "sem" | "transactional" | "affiliate" | "loyalty" | "newsletter" | "abandoned_cart" | "receipt";
type MarketingEventMarketingChannel = "search" | "display" | "social" | "email" | "referral";
type MarketingEventBudgetType = "daily" | "lifetime";
interface IMarketingEvent {
breadcrumb_id: any | null;
budget: string;
budget_type: MarketingEventBudgetType;
currency: string;
description: string | null;
ended_at: string | null;
event_target: string;
event_type: MarketingEventEventType;
id: number;
manage_url: string;
marketed_resources: IMarketingEventMarketedResources[];
marketing_channel: MarketingEventMarketingChannel;
paid: boolean;
preview_url: string;
referring_domain: string;
remote_id: string;
scheduled_to_end_at: string | null;
started_at: string;
utm_campaign: string;
utm_medium: string;
utm_source: string;
}
type MetaFieldValueType = "string" | "integer";
interface IMetafield {
created_at: string;
description: string | null;
id: number;
key: string;
namespace: string;
owner_id: number;
owner_resource: string;
value: string | number;
value_type: MetaFieldValueType;
updated_at: string;
}
type OrderCancelReason = "customer" | "declined" | "fraud" | "inventory" | "other";
interface IOrderClientDetails {
accept_language: string | null;
browser_height: number | null;
browser_ip: string | null;
browser_width: number | null;
session_has: string | null;
user_agent: string | null;
}
interface IOrderCustomer {
accepts_marketing: boolean;
created_at: string;
email: string;
first_name: string;
id: number;
last_name: string;
phone: string;
multipass_identifier: null;
last_order_id: number | null;
last_order_name: string | null;
note: string | null;
orders_count: number;
state: CustomerState;
tags: string;
total_spent: string;
updated_at: string;
}
type OrderDiscountCodeType = "fixed_amount" | "percentage" | "shipping";
type OrderFinancialStatus = "authorized" | "paid" | "partially_paid" | "partially_refunded" | "pending" | "voided";
type OrderFulfillmentStatus = "fulfilled" | "partial" | null;
type OrderProcessingMethod = "checkout" | "direct" | "express" | "manual" | "offsite";
interface IOrderDiscountCode {
amount: number;
code: string;
tyoe: OrderDiscountCodeType
}
interface IOrderFulfillment {
created_at: string;
id: number;
line_items: any;
order_id: number;
receipt: string;
order_status: any;
tracking_company: string;
tracking_number: string;
updated_at: string;
}
interface IOrderLineItemProperty {
name: string;
value: string;
}
interface IOrderTaxLine {
title: string;
price: string;
rate: number;
}
interface IOrderLineItemNote {
name: string;
value: string;
}
interface IOrderLineItem {
fulfillable_quantity: number;
fulfillment_service: string;
fulfillment_status: OrderFulfillmentStatus;
grams: number;
id: number;
price: string;
product_id: number;
quantity: number;
requires_shipping: boolean;
sku: string;
title: string;
variant_id: number;
variant_title: string;
vendor: string;
name: string;
gift_card: boolean;
properties: IOrderLineItemProperty[];
taxable: boolean;
tax_lines: IOrderTaxLine;
total_discount: string;
}
interface IOrderShippingLineTaxLine {
title: string;
price: string;
rate: number;
}
interface IOrderShippingLine {
code: string;
price: number;
source: string;
title: string;
tax_lines: IOrderShippingLineTaxLine[];
carrier_identifier: string | null;
requested_fulfillment_service_id: string | null;
}
interface IOrder {
app_id: number;
billing_address: ICustomerAddress;
browser_ip: string | null;
buyer_accepts_marketing: boolean;
cancel_reason: OrderCancelReason;
cancelled_at: string | null;
cart_token: string;
client_details: IOrderClientDetails;
closed_at: string | null;
created_at: string;
currency: string;
customer: IOrderCustomer;
customer_locale: string;
discount_codes: IOrderDiscountCode[];
email: string;
financial_status: OrderFinancialStatus;
fulfillments: IOrderFulfillment[];
fulfillment_status: OrderFulfillmentStatus;
tags: string;
gateway: string;
id: number;
landing_site: string;
line_items: IOrderLineItem[];
location_id: number;
name: string;
note: string | null;
note_attributes: IOrderLineItemNote[];
number: number;
order_number: number;
payment_details: any;
payment_gateway_names: string[];
phone: string;
processed_at: string;
processing_method: OrderProcessingMethod;
referring_site: string;
refunds: string;
shipping_address: ICustomerAddress;
shipping_lines: IOrderShippingLine[];
}
type OrderRisksRecommendation = "accept" | "cancel" | "cancel";
interface IOrderRisk {
cause_cancel: boolean;
checkout_id: number | null;
display: boolean;
id: number;
order_id: number;
message: string;
recommendation: OrderRisksRecommendation;
score: number;
source: string;
}
interface IPage {
author: string;
body_html: string;
created_at: string;
handle: string;
id: number;
metafield: string;
published_at: string;
shop_id: number;
template_suffic: string | null;
title: string;
updated_at: string;
}
interface IPolicy {
title: string;
body: string;
url: string;
created_at: string;
updated_at: string;
}
interface IPriceRulePrerequisiteSubtotalRange {
prerequisite_subtotal_range: string;
}
type PriceRuleTargetType = "line_item" | "shipping_line";
type PriceRuleTargetSelection = "all" | "entitled";
type PriceRuleAllocationMethod = "each" | "across";
type PriceRuleValueType = "fixed_amount" | "percentage";
type PriceRuleCustomerSelection = "all" | "prerequisite";
interface IPriceRule {
created_at: string;
id: number;
title: string;
target_type: PriceRuleTargetType;
target_selection: PriceRuleTargetSelection;
allocation_method: PriceRuleAllocationMethod;
value_type: PriceRuleValueType;
value: string;
once_per_customer: boolean;
usage_limit: number | null;
customer_selection: PriceRuleCustomerSelection;
prerequisite_saved_search_ids: number[];
prerequisite_subtotal_range: IPriceRulePrerequisiteSubtotalRange | null;
prerequisite_shipping_price_range: string;
entitled_product_ids: number[];
entitled_variant_ids: number[];
entitled_collection_ids: number[];
entitled_country_ids: number[];
starts_at: string;
ends_at: string;
}
interface IProductOptions {
id: number;
name: string;
position: number;
product_id: number;
values: string[];
}
interface IProduct {
body_html: string;
created_at: string;
handle: string;
id: number;
image: any | null;
images: IProductImage[];
options: IProductOptions[];
product_type: string;
published_at: string;
published_scope: string;
tags: string;
template_suffix: string | null;
title: string;
metafields_global_title_tag?: string;
metafields_global_description_tag?: string;
updated_at: string;
variants: IProductVariant[];
}
interface IProductImage {
created_at: string;
id: number;
position: number;
product_id: number;
variant_ids: number[];
src: string;
width: number;
height: number;
updated_at: string;
}
type ProductVariantInventoryPolicy = "deny" | "continue";
type ProductVariantWeightUnit = "g" | "kg" | "oz" | "lb";
interface IProductVariant {
barcode: string;
compare_at_price: string;
created_at: string;
fulfillment_service: string;
grams: number;
id: number;
image_id: number | null;
inventory_item_id: number;
inventory_management: string;
inventory_policy: ProductVariantInventoryPolicy;
inventory_quantity: number;
old_inventory_quantity: number;
option1: string | null;
option2: string | null;
option3: string | null;
position: number;
price: string;
product_id: number;
requires_shipping: boolean;
sku: string;
taxable: boolean;
title: string;
updated_at: string;
weight: number;
weight_unit: ProductVariantWeightUnit;
}
interface IProductListing {
product_id: number;
body_html: string;
created_at: string;
handle: string;
images: IProductImage[];
options: string[];
product_type: string;
published_at: string;
tags: string;
title: string;
updated_at: string;
variants: IProductVariant[];
}
interface IProvince {
code: string;
country_id: number;
id: number;
name: string;
shipping_zone_id: NumberConstructor;
tax: number;
tax_name: string;
tax_type: string | null;
tax_percentage: number;
}
type RecurringApplicationChargeStatus =
"accepted" |
"active" |
"cancelled" |
"declined" |
"expired" |
"frozen" |
"pending";
interface IRecurringApplicationCharge {
activated_on: string | null;
billing_on: string | null;
cancelled_on: string | null;
capped_amount: number;
confirmation_url: string;
created_at: string;
id: number;
name: string;
price: string;
return_url: string;
status: RecurringApplicationChargeStatus;
terms: string;
test: true | null;
trial_days: number;
trial_ends_on: string;
updated_at: string;
}
interface ICreateRecurringApplicationCharge {
capped_amount?: number;
name: string;
price: number;
return_url: string;
terms?: string;
test?: true;
trial_days?: number;
trial_ends_on?: string;
}
interface IRedirect {
id: string;
path: string;
target: string;
}
interface ICreateRedirect {
path: string;
target: string;
}
interface IUpdateRedirect {
path?: string;
target?: string;
}
interface IRefundLineItem {
id: number;
line_item: any;
lint_item_id: number;
quantity: 2;
}
interface IRefund {
created_at: string;
processed_at: string;
id: number;
note: string;
refund_line_items: IRefundLineItem[];
restock: string;
transactions: string;
user_id: string;
}
interface IReport {
category: string;
id: number;
name: string;
shopify_ql: string;
updated_at: string;
}
type ResourceFeedbackState = "requires_action" | "success";
interface IResourceFeedback {
shop_id: number;
created_at: string;
updated_at: string;
resource_id: number;
resource_type: string;
state: ResourceFeedbackState;
messages: string[];
feedback_generated_at: string;
}
type ScriptTagDisplayScope = "online_store" | "order_status" | "all";
type ScriptTagEvent = "onload";
interface IScriptTag {
created_at: string;
event: ScriptTagEvent;
id: number;
src: string;
display_scope: ScriptTagDisplayScope;
updated_at: string;
}
interface ICreateScriptTag {
event: ScriptTagEvent;
src: string;
display_scope?: ScriptTagDisplayScope;
}
interface IUpdateScriptTag {
event: ScriptTagEvent;
src: string;
display_scope?: ScriptTagDisplayScope;
}
interface ICarrierShippingRateProvider {
carrier_service_id: number;
flat_rate_modified: string;
id: number;
percentage_modified: number;
service_filter: any;
shipping_zone_id: number;
}
interface IPriceBasedShippingRate {
id: number;
max_order_subtotal: string | null;
min_order_subtotal: string | null;
name: string;
price: string;
shipping_zone_id: number;
}
interface IWeightBasedShippingRate {
id: number;
name: s