interface OAuthConfig { clientId: string clientSecret: string authCallback: string loginHost?: string } interface RestClientConfig { storeHash: string accessToken: string apiHost?: string rateLimitConfig?: RateLimitConfig } interface RateLimitStatus { msToReset: number nextWindowTime: Date windowSize: number requestsRemaining: number requestsQuota: number } type CallbackParams = { [key: string]: unknown } interface RateLimitConfig { minRequestsRemaining: number enableWait: boolean callbackParams?: CallbackParams callback?(params?: CallbackParams): void } interface AuthCallbackQueryParams { code: string scope: string context: string } interface AuthResponsePayload { access_token: string scope: string user: User context: string account_uuid: string } interface User { id: number username: string email: string } interface VerifiedJwt { aud: string iss: string iat: number nbf: number exp: number jti: string sub: string user: { id: number email: string } owner: { id: number email: string } url: string } interface FormField { name: string value: string } interface OrderProduct { name: string name_customer?: string name_merchant?: string quantity: number price_inc_tax: number price_ex_tax: number upc?: string sku?: string } interface OrderProductOptions { id?: number value?: string display_name?: string display_name_customer?: string display_name_merchant?: string display_value?: string display_value_merchant?: string display_value_customer?: string } interface OrderProductsProductOptions extends Required { option_id: number order_product_id: number product_option_id: number type: string name: string display_style: string } interface OrderProductsAppliedDiscounts { id: string amount: string name: string code: string | null target: string } type OrderProductsUpdate = Partial> & { id?: number product_id?: number product_options?: OrderProductOptions[] variant_id?: number wrapping_name?: string wrapping_message?: string wrapping_cost_ex_tax?: number wrapping_cost_inc_tax?: number } interface OrderBillingAddress { first_name?: string last_name?: string company?: string street_1?: string street_2?: string city?: string state?: string zip: string country?: string country_iso2?: string phone?: string email?: string form_fields?: FormField[] } interface OrderShipmentItem { order_product_id: number product_id: number quantity: number } interface LinkedResource { url: string resource: string } interface OrderStatus extends V2OrderCountResponseBase { id: number name: string system_label: string custom_label: string system_description: string sort_order: number } interface OrderShippingAddress { first_name?: string last_name?: string company?: string street_1?: string street_2?: string city?: string state?: string zip?: string country?: string country_iso2?: string phone?: string email?: string shipping_method?: string } interface V2OrderResponseBase { id: number statusSetAt: Date tibiId?: string status?: PrintfulStates date_modified: string date_shipped: string cart_id: string status: string subtotal_tax: string shipping_cost_tax: string shipping_cost_tax_class_id: number handling_cost_tax: string handling_cost_tax_class_id: number wrapping_cost_tax: string wrapping_cost_tax_class_id: number payment_status: string store_credit_amount: string gift_certificate_amount: string currency_id: number currency_code: string currency_exchange_rate: string default_currency_id: number default_currency_code: string store_default_currency_code: string store_default_to_transactional_exchange_rate: string coupon_discount: string shipping_address_count: number is_email_opt_in: boolean order_source: string products: LinkedResource productObjs?: V2OrderProductsResponseBase[] shipping_addresses: LinkedResource shipping_addressObjs?: V2OrderShippingAddressesResponseBase[] coupons: LinkedResource status_id: number base_handling_cost: string base_shipping_cost: string base_wrapping_cost: string billing_address: Required channel_id: number customer_id: number customer_message: string date_created: string discount_amount: string ebay_order_id: string external_id: string external_merchant_id: string external_source: string geoip_country: string geoip_country_iso2: string handling_cost_ex_tax: string handling_cost_inc_tax: string ip_address: string ip_address_v6: string is_deleted: boolean items_shipped: number items_total: number order_is_digital: boolean payment_method: string payment_provider_id: string | number refunded_amount: string shipping_cost_ex_tax: string shipping_cost_inc_tax: string staff_notes: string subtotal_ex_tax: string subtotal_inc_tax: string tax_provider_id: string customer_locale: string total_ex_tax: string total_inc_tax: string wrapping_cost_ex_tax: string wrapping_cost_inc_tax: string shipments?: PrintfulShipment[] } interface V2OrderRequestBase { products: OrderProduct[] shipping_addresses?: OrderShippingAddress[] base_handling_cost?: string base_shipping_cost?: string base_wrapping_cost?: string billing_address: OrderBillingAddress channel_id?: number customer_id?: number customer_message?: string date_created?: string default_currency_code?: string discount_amount?: string ebay_order_id?: string external_id?: string external_merchant_id?: string external_source?: string geoip_country?: string geoip_country_iso2?: string handling_cost_ex_tax?: string handling_cost_inc_tax?: string ip_address?: string ip_address_v6?: string is_deleted?: boolean items_shipped?: number items_total?: number order_is_digital?: boolean payment_method?: string payment_provider_id?: string refunded_amount?: string shipping_cost_ex_tax?: string shipping_cost_inc_tax?: string staff_notes?: string status_id?: number subtotal_ex_tax?: string subtotal_inc_tax?: string tax_provider_id?: string customer_locale?: string total_ex_tax?: string total_inc_tax?: string wrapping_cost_ex_tax?: string wrapping_cost_inc_tax?: string } type V2OrderUpdateRequest = Partial> & { products?: Partial billing_address?: Partial } interface V2OrderFiltersBase { [key: string]: unknown limit?: number page?: number } interface V2OrdersListFilters extends V2OrderFiltersBase { cart_id?: string channel_id?: number customer_id?: number email?: string is_deleted?: boolean max_date_created?: string max_date_modified?: string max_id?: number max_total?: number min_date_created?: string min_date_modified?: string min_id?: number min_total?: number payment_method?: string sort?: string status_id?: number } interface V2OrderTaxesListFilters extends V2OrderFiltersBase { details?: string } interface V2OrderMessagesListFilters extends V2OrderFiltersBase { customer_id?: number is_flagged?: boolean max_date_created?: string max_id?: number min_date_created?: string min_id?: number status?: string } interface V2OrderCountResponseBase { count: number } interface V2OrderCountResponse extends V2OrderCountResponseBase { statuses: OrderStatus[] } interface V2OrderShipmentsResponseBase { id: number order_id: number customer_id: number order_address_id: number date_created: string tracking_number: string shipping_method: string shipping_provider: string tracking_carrier: string tracking_link: string comments: string billing_address: Required shipping_address: Required items: OrderShipmentItem[] } interface V2OrderShippingAddressesResponseBase extends Required { id: number order_id: number items_total: number items_shipped: number base_cost: string cost_ex_tax: string cost_inc_tax: string cost_tax: string cost_tax_class_id: number base_handling_cost: string handling_cost_ex_tax: string handling_cost_inc_tax: string handling_cost_tax: string handling_cost_tax_class_id: number shipping_zone_id: number shipping_zone_name: string form_fields: FormField[] shipping_quotes: LinkedResource } interface V2OrderProductsResponseBase { id: number order_id: number product_id: number order_address_id: number name: string sku: string type: string base_price: string price_ex_tax: string price_inc_tax: string price_tax: string base_total: string total_ex_tax: string total_inc_tax: string total_tax: string quantity: number base_cost_price: string cost_price_inc_tax: string cost_price_ex_tax: string weight: number | string cost_price_tax: string is_refunded: boolean refunded_amount: string return_id: number wrapping_name: string base_wrapping_cost: string wrapping_cost_ex_tax: string wrapping_cost_inc_tax: string wrapping_cost_tax: string wrapping_message: string quantity_shipped: number event_name: string event_date: string fixed_shipping_cost: string ebay_item_id: string ebay_transaction_id: string option_set_id: number parent_order_product_id: number is_bundled_product: boolean bin_picking_number: string applied_discounts: OrderProductsAppliedDiscounts[] product_options: OrderProductsProductOptions[] external_id: string upc: string variant_id: number name_customer: string name_merchant: string } interface V2OrderStatusResponseBase { id: number name: string system_label: string custom_label: string system_description: string } interface V2OrderShipmentsRequestBodyBase { order_address_id: number tracking_number?: string shiping_method?: string shipping_provider?: string tracking_carrier?: string comments?: string items: Omit[] } type V2OrderShipmentsUpdateRequest = Partial> interface V2OrderCouponsResponseBase { id: number coupon_id: number order_id: number code: string | null amount: string | number type: number discount: number } interface V2OrderTaxesResponseBase { id: number order_id: number order_address_id: number tax_rate_id: number tax_class_id: number name: string class: string rate: string priority: number priority_amount: number line_amount: string order_product_id: string line_item_type: "item" | "shipping" | "handling" | "gift-wrapping" } interface V2OrderMessagesResponseBase { id: number order_id: number staff_id: number customer_id: number type: string subject: string message: string status: string is_flagged: boolean date_created: string customer: unknown } interface V2OrderShippingQuotesResponseBase { id: string uuid: string timestamp: string shipping_provider_id: string shipping_provider_quote: [] | Record[] provider_code: string carrier_code: string rate_code: string rate_id: string method_id: number } interface ProductImage { id: number product_id: number is_thumbnail: boolean sort_order: number description: string image_file: string url_zoom: string url_standard: string url_thumbnail: string url_tiny: string date_modified: string } interface RestApiCart { id: string parent_id: string | null customer_id: number email: string currency: { code: string } tax_included: boolean base_amount: number discount_amount: number cart_amount: number coupons: RestApiCoupon[] discounts: RestApiDiscount[] line_items: RestApiLineItems created_time: string updated_time: string channel_id: number locale: string } interface RestApiCoupon { code: string id: string coupon_type: "0" | "1" | "2" | "3" | "4" | "5" discounted_amount: number } interface RestApiDiscount { id: string discounted_amount: number } interface RestApiLineItems { physical_items: RestApiPhysicalItem[] digital_items: RestApiItem[] gift_certificates: RestApiGiftCertificate[] custom_items: RestApiCustomItem[] } interface RestApiPhysicalItem extends RestApiItem { variant_id: number product_id: number weight: number dimensions: { height: number width: number depth: number } } interface RestApiItem { id: string sku: string name: string quantity: number is_taxable: boolean image_url: string discounts: RestApiDiscount[] coupon_amount: number discount_amount: number original_price: number list_price: number sale_price: number extended_list_price: number extended_sale_price: number options: RestApiOption[] url: string } interface RestApiGiftCertificate { // Add Gift Certificate specific fields here } interface RestApiCustomItem { // Add Custom Item specific fields here } interface RestApiOption { // Add Option specific fields here gift_wrapping?: { // Add Gift Wrapping details here } } interface RestWishlistItem { id?: number product_id: number variant_id: number } interface RestWishlist { id: number customer_id: number is_public: boolean name: string items: RestWishlistItem[] }