shopline-sdk-python 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- shopline_sdk/__init__.py +17 -0
- shopline_sdk/apis/__init__.py +0 -0
- shopline_sdk/apis/addon_products/__init__.py +0 -0
- shopline_sdk/apis/addon_products/bulk_update_addon_product_quantity_by_sku.py +72 -0
- shopline_sdk/apis/addon_products/create_addon_product.py +69 -0
- shopline_sdk/apis/addon_products/get_addon_product.py +42 -0
- shopline_sdk/apis/addon_products/get_addon_product_stocks.py +66 -0
- shopline_sdk/apis/addon_products/get_addon_products.py +84 -0
- shopline_sdk/apis/addon_products/search_addon_products.py +113 -0
- shopline_sdk/apis/addon_products/update_addon_product.py +54 -0
- shopline_sdk/apis/addon_products/update_addon_product_quantity.py +96 -0
- shopline_sdk/apis/addon_products/update_addon_product_stock.py +86 -0
- shopline_sdk/apis/affiliate_campaigns/__init__.py +0 -0
- shopline_sdk/apis/affiliate_campaigns/create_affiliate_campaign.py +109 -0
- shopline_sdk/apis/affiliate_campaigns/delete_affiliate_campaign.py +44 -0
- shopline_sdk/apis/affiliate_campaigns/export_affiliate_campaign_report_to_partner.py +60 -0
- shopline_sdk/apis/affiliate_campaigns/get_affiliate_campaign.py +59 -0
- shopline_sdk/apis/affiliate_campaigns/get_affiliate_campaign_orders.py +75 -0
- shopline_sdk/apis/affiliate_campaigns/get_affiliate_campaign_summary.py +49 -0
- shopline_sdk/apis/affiliate_campaigns/get_affiliate_campaigns.py +84 -0
- shopline_sdk/apis/affiliate_campaigns/get_products_sales_ranking_of_campaign.py +73 -0
- shopline_sdk/apis/affiliate_campaigns/update_affiliate_campaign.py +96 -0
- shopline_sdk/apis/agents/__init__.py +0 -0
- shopline_sdk/apis/agents/get_agent.py +59 -0
- shopline_sdk/apis/agents/get_agents.py +77 -0
- shopline_sdk/apis/bulk_operations/__init__.py +0 -0
- shopline_sdk/apis/bulk_operations/get_a_bulk_operation.py +43 -0
- shopline_sdk/apis/bulk_operations/get_bulk_operations.py +57 -0
- shopline_sdk/apis/cart_item_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/cart_item_app_metafields/bulk_create_app_metafield.py +52 -0
- shopline_sdk/apis/cart_item_app_metafields/bulk_delete_app_metafield.py +61 -0
- shopline_sdk/apis/cart_item_app_metafields/bulk_update_app_metafield.py +62 -0
- shopline_sdk/apis/cart_item_app_metafields/get_app_metafields_attached_to_cart_items_of_specific_cart.py +61 -0
- shopline_sdk/apis/cart_item_metafields/__init__.py +0 -0
- shopline_sdk/apis/cart_item_metafields/bulk_create_metafield.py +52 -0
- shopline_sdk/apis/cart_item_metafields/bulk_delete_metafield.py +62 -0
- shopline_sdk/apis/cart_item_metafields/bulk_update_metafield.py +62 -0
- shopline_sdk/apis/cart_item_metafields/get_metafields_attached_to_cart_items_of_specific_cart.py +62 -0
- shopline_sdk/apis/carts/__init__.py +0 -0
- shopline_sdk/apis/carts/bulk_add_items_to_cart.py +80 -0
- shopline_sdk/apis/carts/bulk_delete_cart_items.py +59 -0
- shopline_sdk/apis/carts/bulk_patch_cart_items.py +61 -0
- shopline_sdk/apis/carts/get_cart.py +63 -0
- shopline_sdk/apis/carts/get_cart_id.py +74 -0
- shopline_sdk/apis/categories/__init__.py +0 -0
- shopline_sdk/apis/categories/bulk_assign.py +75 -0
- shopline_sdk/apis/categories/bulk_update_category_product_sorting.py +84 -0
- shopline_sdk/apis/categories/create_category.py +62 -0
- shopline_sdk/apis/categories/delete_category.py +62 -0
- shopline_sdk/apis/categories/get_categories.py +104 -0
- shopline_sdk/apis/categories/get_category.py +76 -0
- shopline_sdk/apis/categories/update_category.py +70 -0
- shopline_sdk/apis/channels/__init__.py +0 -0
- shopline_sdk/apis/channels/create_product_channel_price.py +45 -0
- shopline_sdk/apis/channels/get_channel.py +76 -0
- shopline_sdk/apis/channels/get_channels.py +83 -0
- shopline_sdk/apis/channels/get_product_channel_price.py +75 -0
- shopline_sdk/apis/channels/update_product_channel_price.py +45 -0
- shopline_sdk/apis/conversations/__init__.py +0 -0
- shopline_sdk/apis/conversations/create_order_message.py +91 -0
- shopline_sdk/apis/conversations/create_return_order_message.py +90 -0
- shopline_sdk/apis/conversations/create_shop_message.py +81 -0
- shopline_sdk/apis/conversations/get_conversations.py +76 -0
- shopline_sdk/apis/conversations/get_messages.py +76 -0
- shopline_sdk/apis/custom_fields/__init__.py +0 -0
- shopline_sdk/apis/custom_fields/get_custom_fields.py +42 -0
- shopline_sdk/apis/customer_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/customer_app_metafields/create_specific_app_metafield.py +44 -0
- shopline_sdk/apis/customer_app_metafields/delete_specific_app_metafield.py +42 -0
- shopline_sdk/apis/customer_app_metafields/get_app_metafields_attached_to_specific_customer.py +61 -0
- shopline_sdk/apis/customer_app_metafields/get_specific_app_metafield.py +41 -0
- shopline_sdk/apis/customer_app_metafields/update_specific_app_metafield.py +44 -0
- shopline_sdk/apis/customer_group_children/__init__.py +0 -0
- shopline_sdk/apis/customer_group_children/get_children_group_of_the_customer_group.py +89 -0
- shopline_sdk/apis/customer_groups/__init__.py +0 -0
- shopline_sdk/apis/customer_groups/get_customer_group.py +65 -0
- shopline_sdk/apis/customer_groups/get_customer_groups.py +108 -0
- shopline_sdk/apis/customer_groups/get_customer_ids_of_the_specific_customer_group.py +84 -0
- shopline_sdk/apis/customer_groups/search_customer_groups.py +92 -0
- shopline_sdk/apis/customer_metafields/__init__.py +0 -0
- shopline_sdk/apis/customer_metafields/create_specific_metafield.py +44 -0
- shopline_sdk/apis/customer_metafields/delete_specific_metafield.py +42 -0
- shopline_sdk/apis/customer_metafields/get_metafields_attached_to_specific_customer.py +62 -0
- shopline_sdk/apis/customer_metafields/get_specific_metafield.py +41 -0
- shopline_sdk/apis/customer_metafields/update_specific_metafield.py +44 -0
- shopline_sdk/apis/customers/__init__.py +0 -0
- shopline_sdk/apis/customers/add_or_remove_customer_tags.py +93 -0
- shopline_sdk/apis/customers/create_customer.py +87 -0
- shopline_sdk/apis/customers/delete_customer.py +62 -0
- shopline_sdk/apis/customers/get_customer.py +94 -0
- shopline_sdk/apis/customers/get_customer_member_points_history.py +92 -0
- shopline_sdk/apis/customers/get_customer_store_credit_history.py +98 -0
- shopline_sdk/apis/customers/get_customers.py +127 -0
- shopline_sdk/apis/customers/get_line_customer.py +67 -0
- shopline_sdk/apis/customers/getcustomers_smembershipinfo.py +93 -0
- shopline_sdk/apis/customers/search_customers.py +216 -0
- shopline_sdk/apis/customers/update_customer.py +87 -0
- shopline_sdk/apis/customers/update_customer_member_points.py +113 -0
- shopline_sdk/apis/customers/update_customer_store_credits.py +172 -0
- shopline_sdk/apis/customers/update_customer_subscriptions.py +64 -0
- shopline_sdk/apis/customers/update_customer_tags.py +88 -0
- shopline_sdk/apis/delivery_options/__init__.py +0 -0
- shopline_sdk/apis/delivery_options/get_delivery_config.py +52 -0
- shopline_sdk/apis/delivery_options/get_delivery_option.py +42 -0
- shopline_sdk/apis/delivery_options/get_delivery_options.py +65 -0
- shopline_sdk/apis/delivery_options/get_delivery_time_slots.py +64 -0
- shopline_sdk/apis/delivery_options/updatedeliveryoption_sstoreinformation.py +67 -0
- shopline_sdk/apis/event_trackers/__init__.py +0 -0
- shopline_sdk/apis/event_trackers/create_an_event_tracker.py +83 -0
- shopline_sdk/apis/event_trackers/delete_an_event_tracker.py +57 -0
- shopline_sdk/apis/event_trackers/get_an_event_tracker.py +64 -0
- shopline_sdk/apis/event_trackers/get_event_trackers.py +97 -0
- shopline_sdk/apis/event_trackers/update_event_tracker.py +91 -0
- shopline_sdk/apis/flash_price_campaigns/__init__.py +0 -0
- shopline_sdk/apis/flash_price_campaigns/create_flash_price_campaign.py +45 -0
- shopline_sdk/apis/flash_price_campaigns/delete_flash_price_campaign.py +44 -0
- shopline_sdk/apis/flash_price_campaigns/get_a_flash_price_campaign.py +43 -0
- shopline_sdk/apis/flash_price_campaigns/get_flash_price_campaigns.py +72 -0
- shopline_sdk/apis/flash_price_campaigns/update_flash_price_campaign.py +46 -0
- shopline_sdk/apis/gifts/__init__.py +0 -0
- shopline_sdk/apis/gifts/bulk_update_quantity_by_sku.py +106 -0
- shopline_sdk/apis/gifts/create_gift.py +57 -0
- shopline_sdk/apis/gifts/get_gift_stocks.py +66 -0
- shopline_sdk/apis/gifts/get_gifts.py +86 -0
- shopline_sdk/apis/gifts/search_gifts.py +110 -0
- shopline_sdk/apis/gifts/update_gift.py +54 -0
- shopline_sdk/apis/gifts/update_gift_quantity.py +100 -0
- shopline_sdk/apis/gifts/update_gift_stock.py +86 -0
- shopline_sdk/apis/layouts/__init__.py +0 -0
- shopline_sdk/apis/layouts/get_layouts_sections.py +77 -0
- shopline_sdk/apis/medias/__init__.py +0 -0
- shopline_sdk/apis/medias/create_image.py +52 -0
- shopline_sdk/apis/member_point_rules/__init__.py +0 -0
- shopline_sdk/apis/member_point_rules/get_member_point_rules.py +55 -0
- shopline_sdk/apis/member_points/__init__.py +0 -0
- shopline_sdk/apis/member_points/bulk_update_member_points.py +87 -0
- shopline_sdk/apis/membership_tiers/__init__.py +0 -0
- shopline_sdk/apis/membership_tiers/get_customer_membership_tier_history.py +84 -0
- shopline_sdk/apis/membership_tiers/get_membership_tiers.py +65 -0
- shopline_sdk/apis/merchant_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/merchant_app_metafields/get_app_metafields_attached_to_current_merchant.py +61 -0
- shopline_sdk/apis/merchant_metafields/__init__.py +0 -0
- shopline_sdk/apis/merchant_metafields/get_metafields_attached_to_current_merchant.py +62 -0
- shopline_sdk/apis/merchants/__init__.py +0 -0
- shopline_sdk/apis/merchants/generatemerchant_sexpresscartlink.py +66 -0
- shopline_sdk/apis/merchants/get_merchant.py +56 -0
- shopline_sdk/apis/merchants/get_merchants.py +46 -0
- shopline_sdk/apis/metafield_definitions/__init__.py +0 -0
- shopline_sdk/apis/metafield_definitions/create_specific_metafield_definition.py +44 -0
- shopline_sdk/apis/metafield_definitions/get_an_array_of_metafield_definitions.py +45 -0
- shopline_sdk/apis/metafield_definitions/get_specific_metafield_definition.py +41 -0
- shopline_sdk/apis/multipass_linking/__init__.py +0 -0
- shopline_sdk/apis/multipass_linking/delete_multipass_linking_for_customer.py +61 -0
- shopline_sdk/apis/multipass_linking/get_active_multipass_linkings.py +67 -0
- shopline_sdk/apis/multipass_linking/update_multipass_linking_for_customer.py +69 -0
- shopline_sdk/apis/multipass_secret/__init__.py +0 -0
- shopline_sdk/apis/multipass_secret/create_multipass_secret.py +41 -0
- shopline_sdk/apis/multipass_secret/get_multipass_secret.py +50 -0
- shopline_sdk/apis/order_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/order_app_metafields/get_app_metafields_attached_to_specific_order.py +61 -0
- shopline_sdk/apis/order_deliveries/__init__.py +0 -0
- shopline_sdk/apis/order_deliveries/get_order_delivery.py +43 -0
- shopline_sdk/apis/order_deliveries/update_order_delivery.py +63 -0
- shopline_sdk/apis/order_item_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/order_item_app_metafields/get_app_metafields_attached_to_order_items_of_specific_order.py +61 -0
- shopline_sdk/apis/order_item_metafields/__init__.py +0 -0
- shopline_sdk/apis/order_item_metafields/get_metafields_attached_to_order_items_of_specific_order.py +62 -0
- shopline_sdk/apis/order_metafields/__init__.py +0 -0
- shopline_sdk/apis/order_metafields/get_metafields_attached_to_specific_order.py +62 -0
- shopline_sdk/apis/orders/__init__.py +0 -0
- shopline_sdk/apis/orders/bulk_execute_shipment.py +70 -0
- shopline_sdk/apis/orders/cancel_order.py +70 -0
- shopline_sdk/apis/orders/create_archived_orders_report.py +72 -0
- shopline_sdk/apis/orders/create_order.py +90 -0
- shopline_sdk/apis/orders/execute_shipment.py +63 -0
- shopline_sdk/apis/orders/get_all_orders_tags.py +54 -0
- shopline_sdk/apis/orders/get_order.py +78 -0
- shopline_sdk/apis/orders/get_order_action_logs.py +62 -0
- shopline_sdk/apis/orders/get_order_labels_of_delivery.py +94 -0
- shopline_sdk/apis/orders/get_order_transaction_by_order_ids.py +58 -0
- shopline_sdk/apis/orders/get_orders.py +111 -0
- shopline_sdk/apis/orders/search_orders.py +339 -0
- shopline_sdk/apis/orders/split_order.py +84 -0
- shopline_sdk/apis/orders/update_order.py +123 -0
- shopline_sdk/apis/orders/update_order_delivery_status.py +88 -0
- shopline_sdk/apis/orders/update_order_payment_status.py +92 -0
- shopline_sdk/apis/orders/update_order_status.py +94 -0
- shopline_sdk/apis/orders/update_order_tags.py +91 -0
- shopline_sdk/apis/payments/__init__.py +0 -0
- shopline_sdk/apis/payments/get_payment.py +59 -0
- shopline_sdk/apis/payments/get_payments.py +88 -0
- shopline_sdk/apis/product_app_metafields/__init__.py +0 -0
- shopline_sdk/apis/product_app_metafields/get_app_metafields_attached_to_specific_product.py +61 -0
- shopline_sdk/apis/product_metafields/__init__.py +0 -0
- shopline_sdk/apis/product_metafields/get_metafields_attached_to_specific_product.py +62 -0
- shopline_sdk/apis/product_review_comments/__init__.py +0 -0
- shopline_sdk/apis/product_review_comments/bulk_create_product_review_comments.py +66 -0
- shopline_sdk/apis/product_review_comments/bulk_delete_product_review_comments.py +46 -0
- shopline_sdk/apis/product_review_comments/bulk_update_product_review_comments.py +64 -0
- shopline_sdk/apis/product_review_comments/create_product_review_comments.py +45 -0
- shopline_sdk/apis/product_review_comments/delete_product_review_comment.py +37 -0
- shopline_sdk/apis/product_review_comments/get_product_review_comment.py +42 -0
- shopline_sdk/apis/product_review_comments/get_product_review_comments.py +91 -0
- shopline_sdk/apis/product_review_comments/update_product_review_comment.py +45 -0
- shopline_sdk/apis/product_subscriptions/__init__.py +0 -0
- shopline_sdk/apis/product_subscriptions/get_a_list_of_product_subscriptions.py +71 -0
- shopline_sdk/apis/product_subscriptions/get_product_subscription.py +42 -0
- shopline_sdk/apis/products/__init__.py +0 -0
- shopline_sdk/apis/products/add_product_images.py +84 -0
- shopline_sdk/apis/products/batch_update_current_product_labels.py +73 -0
- shopline_sdk/apis/products/bulk_delete_product.py +77 -0
- shopline_sdk/apis/products/bulk_update_stock.py +81 -0
- shopline_sdk/apis/products/bulkpublish_unpublishproductinonlinestore.py +64 -0
- shopline_sdk/apis/products/bulkpublish_unpublishproductinretailstore.py +64 -0
- shopline_sdk/apis/products/create_product.py +54 -0
- shopline_sdk/apis/products/create_product_variation.py +70 -0
- shopline_sdk/apis/products/delete_product.py +70 -0
- shopline_sdk/apis/products/delete_product_images.py +54 -0
- shopline_sdk/apis/products/delete_product_variation.py +70 -0
- shopline_sdk/apis/products/get_locked_inventory_count.py +53 -0
- shopline_sdk/apis/products/get_product.py +79 -0
- shopline_sdk/apis/products/get_product_stocks.py +66 -0
- shopline_sdk/apis/products/get_products.py +112 -0
- shopline_sdk/apis/products/search_products.py +58 -0
- shopline_sdk/apis/products/update_current_product_tags.py +80 -0
- shopline_sdk/apis/products/update_product.py +54 -0
- shopline_sdk/apis/products/update_product_price.py +94 -0
- shopline_sdk/apis/products/update_product_quantity.py +102 -0
- shopline_sdk/apis/products/update_product_variation.py +46 -0
- shopline_sdk/apis/products/update_product_variation_price.py +92 -0
- shopline_sdk/apis/products/update_product_variation_quantity.py +111 -0
- shopline_sdk/apis/products/update_quantity_by_sku.py +114 -0
- shopline_sdk/apis/products/update_stock.py +89 -0
- shopline_sdk/apis/promotions/__init__.py +0 -0
- shopline_sdk/apis/promotions/create_promotion.py +45 -0
- shopline_sdk/apis/promotions/delete_promotion.py +44 -0
- shopline_sdk/apis/promotions/get_customer_coupon_promotions.py +61 -0
- shopline_sdk/apis/promotions/get_customer_promotions.py +63 -0
- shopline_sdk/apis/promotions/get_promotion.py +60 -0
- shopline_sdk/apis/promotions/get_promotions.py +106 -0
- shopline_sdk/apis/promotions/search_promotions.py +108 -0
- shopline_sdk/apis/promotions/update_promotion.py +54 -0
- shopline_sdk/apis/purchase_orders/__init__.py +0 -0
- shopline_sdk/apis/purchase_orders/create_child_purchase_order.py +66 -0
- shopline_sdk/apis/purchase_orders/create_purchase_order.py +66 -0
- shopline_sdk/apis/purchase_orders/delete_the_specified_purchase_orders.py +60 -0
- shopline_sdk/apis/purchase_orders/get_purchase_orders.py +89 -0
- shopline_sdk/apis/purchase_orders/get_the_specified_purchase_order.py +59 -0
- shopline_sdk/apis/purchase_orders/update_purchase_order.py +66 -0
- shopline_sdk/apis/return_orders/__init__.py +0 -0
- shopline_sdk/apis/return_orders/create_return_order.py +62 -0
- shopline_sdk/apis/return_orders/get_return_order.py +42 -0
- shopline_sdk/apis/return_orders/get_return_orders.py +95 -0
- shopline_sdk/apis/return_orders/update_return_order.py +70 -0
- shopline_sdk/apis/sales/__init__.py +0 -0
- shopline_sdk/apis/sales/create_sale_products.py +78 -0
- shopline_sdk/apis/sales/delete_sale_products.py +44 -0
- shopline_sdk/apis/sales/get_sale_comments.py +77 -0
- shopline_sdk/apis/sales/get_sale_customers.py +69 -0
- shopline_sdk/apis/sales/get_sale_products.py +74 -0
- shopline_sdk/apis/sales/update_sale_product_status.py +71 -0
- shopline_sdk/apis/sales/update_sale_products.py +78 -0
- shopline_sdk/apis/settings/__init__.py +0 -0
- shopline_sdk/apis/settings/get_checkout_setting.py +51 -0
- shopline_sdk/apis/settings/get_domains_setting.py +51 -0
- shopline_sdk/apis/settings/get_layouts_draft_setting.py +59 -0
- shopline_sdk/apis/settings/get_layouts_setting.py +59 -0
- shopline_sdk/apis/settings/get_orders_setting.py +51 -0
- shopline_sdk/apis/settings/get_payments_setting.py +51 -0
- shopline_sdk/apis/settings/get_pos_setting.py +51 -0
- shopline_sdk/apis/settings/get_product_review_setting.py +51 -0
- shopline_sdk/apis/settings/get_products_setting.py +51 -0
- shopline_sdk/apis/settings/get_promotions_setting.py +51 -0
- shopline_sdk/apis/settings/get_setting.py +42 -0
- shopline_sdk/apis/settings/get_shop_setting.py +51 -0
- shopline_sdk/apis/settings/get_tax_setting.py +51 -0
- shopline_sdk/apis/settings/get_theme_draft_setting.py +59 -0
- shopline_sdk/apis/settings/get_theme_setting.py +59 -0
- shopline_sdk/apis/settings/get_third_party_ads_setting.py +42 -0
- shopline_sdk/apis/settings/get_users_setting.py +65 -0
- shopline_sdk/apis/settings/publish_layouts_setting.py +73 -0
- shopline_sdk/apis/settings/publish_theme_setting.py +59 -0
- shopline_sdk/apis/settings/save_layouts_draft_setting.py +67 -0
- shopline_sdk/apis/settings/save_theme_setting.py +59 -0
- shopline_sdk/apis/settings/update_domains_setting.py +85 -0
- shopline_sdk/apis/staffs/__init__.py +0 -0
- shopline_sdk/apis/staffs/get_all_staff.py +62 -0
- shopline_sdk/apis/staffs/get_staff.py +59 -0
- shopline_sdk/apis/staffs/get_staff_permissions.py +62 -0
- shopline_sdk/apis/store_credits/__init__.py +0 -0
- shopline_sdk/apis/store_credits/bulk_update_store_credits.py +90 -0
- shopline_sdk/apis/store_credits/get_store_credits.py +87 -0
- shopline_sdk/apis/storefront_oauth_applications/__init__.py +0 -0
- shopline_sdk/apis/storefront_oauth_applications/create_storefront_o_auth_application.py +52 -0
- shopline_sdk/apis/storefront_oauth_applications/delete_storefront_oauth_application_by_id.py +47 -0
- shopline_sdk/apis/storefront_oauth_applications/get_storefront_o_auth_application.py +41 -0
- shopline_sdk/apis/storefront_oauth_applications/get_storefront_o_auth_application_by_id.py +50 -0
- shopline_sdk/apis/storefront_tokens/__init__.py +0 -0
- shopline_sdk/apis/storefront_tokens/create_storefront_token.py +60 -0
- shopline_sdk/apis/storefront_tokens/delete_storefront_token_by_id.py +54 -0
- shopline_sdk/apis/storefront_tokens/get_storefront_token_by_id.py +51 -0
- shopline_sdk/apis/storefront_tokens/list_all_storefront_tokens.py +46 -0
- shopline_sdk/apis/taxes/__init__.py +0 -0
- shopline_sdk/apis/taxes/get_taxes.py +65 -0
- shopline_sdk/apis/themes/__init__.py +0 -0
- shopline_sdk/apis/themes/get_theme_by_theme_key.py +63 -0
- shopline_sdk/apis/themes/getthethemesectionsbytheme_key.py +76 -0
- shopline_sdk/apis/token/__init__.py +0 -0
- shopline_sdk/apis/token/get_token_info.py +44 -0
- shopline_sdk/apis/user_coupons/__init__.py +0 -0
- shopline_sdk/apis/user_coupons/claim_user_coupon.py +45 -0
- shopline_sdk/apis/user_coupons/create_user_coupon.py +40 -0
- shopline_sdk/apis/user_coupons/get_user_coupons.py +55 -0
- shopline_sdk/apis/user_coupons/get_user_coupons_with_cursor.py +57 -0
- shopline_sdk/apis/user_coupons/redeem_user_coupon.py +45 -0
- shopline_sdk/apis/warehouses/__init__.py +0 -0
- shopline_sdk/apis/warehouses/get_warehouses.py +92 -0
- shopline_sdk/apis/webhooks/__init__.py +0 -0
- shopline_sdk/apis/webhooks/create_webhook.py +45 -0
- shopline_sdk/apis/webhooks/delete_webhook.py +37 -0
- shopline_sdk/apis/webhooks/get_webhook.py +42 -0
- shopline_sdk/apis/webhooks/get_webhooks.py +59 -0
- shopline_sdk/apis/webhooks/update_webhook.py +45 -0
- shopline_sdk/apis/wish_list_items/__init__.py +0 -0
- shopline_sdk/apis/wish_list_items/create_wish_list_item.py +68 -0
- shopline_sdk/apis/wish_list_items/delete_wish_list_item.py +89 -0
- shopline_sdk/apis/wish_list_items/get_wish_list_items.py +88 -0
- shopline_sdk/client.py +15 -0
- shopline_sdk/exceptions.py +48 -0
- shopline_sdk/helper.py +84 -0
- shopline_sdk/models/__init__.py +610 -0
- shopline_sdk/models/addon_product.py +50 -0
- shopline_sdk/models/addon_products.py +14 -0
- shopline_sdk/models/addon_products_cursor_based.py +15 -0
- shopline_sdk/models/address_node.py +27 -0
- shopline_sdk/models/address_nodes.py +20 -0
- shopline_sdk/models/address_preference.py +46 -0
- shopline_sdk/models/address_preference_layout_data.py +15 -0
- shopline_sdk/models/address_preferences.py +16 -0
- shopline_sdk/models/affiliate.py +32 -0
- shopline_sdk/models/affiliate_campaign.py +53 -0
- shopline_sdk/models/affiliate_campaign_order.py +75 -0
- shopline_sdk/models/affiliate_campaign_orders.py +16 -0
- shopline_sdk/models/affiliate_campaigns.py +20 -0
- shopline_sdk/models/agent.py +20 -0
- shopline_sdk/models/agent_work_log.py +30 -0
- shopline_sdk/models/agent_work_logs.py +12 -0
- shopline_sdk/models/agents.py +14 -0
- shopline_sdk/models/analytics.py +12 -0
- shopline_sdk/models/app_metafield_value.py +26 -0
- shopline_sdk/models/app_setting.py +9 -0
- shopline_sdk/models/bad_request_error.py +14 -0
- shopline_sdk/models/bearer_auth.py +9 -0
- shopline_sdk/models/bulk_delete_metafield_body.py +15 -0
- shopline_sdk/models/bulk_update_app_metafield_body.py +16 -0
- shopline_sdk/models/bulk_update_metafield_body.py +17 -0
- shopline_sdk/models/campaign_product.py +18 -0
- shopline_sdk/models/cart.py +128 -0
- shopline_sdk/models/cart_delivery.py +24 -0
- shopline_sdk/models/cart_item.py +51 -0
- shopline_sdk/models/cart_product.py +83 -0
- shopline_sdk/models/cart_product_variation.py +36 -0
- shopline_sdk/models/cart_promotion.py +19 -0
- shopline_sdk/models/categories.py +14 -0
- shopline_sdk/models/categories_cursor_based.py +15 -0
- shopline_sdk/models/category.py +45 -0
- shopline_sdk/models/category_layout.py +23 -0
- shopline_sdk/models/change_payment_method_response.py +14 -0
- shopline_sdk/models/channel.py +49 -0
- shopline_sdk/models/channel_param.py +11 -0
- shopline_sdk/models/channels.py +14 -0
- shopline_sdk/models/checkout_setting.py +37 -0
- shopline_sdk/models/corporate_info.py +34 -0
- shopline_sdk/models/coupon_item.py +53 -0
- shopline_sdk/models/create_agent_body.py +17 -0
- shopline_sdk/models/create_agent_work_log_request_body.py +18 -0
- shopline_sdk/models/create_app_metafield_body.py +15 -0
- shopline_sdk/models/create_bulk_operation_body.py +22 -0
- shopline_sdk/models/create_category_body.py +27 -0
- shopline_sdk/models/create_channel_price_body.py +21 -0
- shopline_sdk/models/create_customer_body.py +63 -0
- shopline_sdk/models/create_customer_group_activity_body.py +24 -0
- shopline_sdk/models/create_delivery_option_body.py +38 -0
- shopline_sdk/models/create_event_tracker_body.py +23 -0
- shopline_sdk/models/create_flash_price_campaign_body.py +22 -0
- shopline_sdk/models/create_metafield_body.py +16 -0
- shopline_sdk/models/create_metafield_definition_body.py +18 -0
- shopline_sdk/models/create_page_body.py +25 -0
- shopline_sdk/models/create_product_body.py +84 -0
- shopline_sdk/models/create_product_feed_setting_body.py +31 -0
- shopline_sdk/models/create_product_review_comment_body.py +21 -0
- shopline_sdk/models/create_product_variation_body.py +13 -0
- shopline_sdk/models/create_promotion_body.py +56 -0
- shopline_sdk/models/create_return_order_body.py +49 -0
- shopline_sdk/models/create_sub_res_app_metafield_body.py +16 -0
- shopline_sdk/models/create_sub_res_metafield_body.py +17 -0
- shopline_sdk/models/create_user_coupon_body.py +18 -0
- shopline_sdk/models/create_webhook_body.py +14 -0
- shopline_sdk/models/create_wish_list_item_body.py +27 -0
- shopline_sdk/models/cursor_based_paginatable.py +12 -0
- shopline_sdk/models/custom_field.py +18 -0
- shopline_sdk/models/customer.py +200 -0
- shopline_sdk/models/customer_coupon_promotions.py +12 -0
- shopline_sdk/models/customer_group.py +33 -0
- shopline_sdk/models/customer_group_activity.py +28 -0
- shopline_sdk/models/customer_groups.py +14 -0
- shopline_sdk/models/customer_promotion.py +54 -0
- shopline_sdk/models/customer_viewed_categories.py +14 -0
- shopline_sdk/models/customer_viewed_category.py +14 -0
- shopline_sdk/models/customer_viewed_product.py +14 -0
- shopline_sdk/models/customer_viewed_products.py +14 -0
- shopline_sdk/models/delivery_option.py +74 -0
- shopline_sdk/models/delivery_rate.py +17 -0
- shopline_sdk/models/delivery_time_slot.py +27 -0
- shopline_sdk/models/domains_setting.py +13 -0
- shopline_sdk/models/domains_setting_webmaster.py +20 -0
- shopline_sdk/models/end_date_param.py +10 -0
- shopline_sdk/models/entity_render_error.py +11 -0
- shopline_sdk/models/event_tracker.py +35 -0
- shopline_sdk/models/event_trackers.py +14 -0
- shopline_sdk/models/extend_promotion.py +25 -0
- shopline_sdk/models/facebook_business_extension_domains_entity.py +16 -0
- shopline_sdk/models/filter_tag.py +14 -0
- shopline_sdk/models/flash_price_campaign.py +39 -0
- shopline_sdk/models/flash_price_campaigns.py +16 -0
- shopline_sdk/models/forbidden_error.py +14 -0
- shopline_sdk/models/gift.py +54 -0
- shopline_sdk/models/gifts.py +14 -0
- shopline_sdk/models/gifts_cursor_based.py +15 -0
- shopline_sdk/models/global_section.py +12 -0
- shopline_sdk/models/global_section_settings.py +27 -0
- shopline_sdk/models/gross_amount_analytics.py +28 -0
- shopline_sdk/models/gross_orders_analytics.py +29 -0
- shopline_sdk/models/individual_info.py +14 -0
- shopline_sdk/models/interval_param.py +11 -0
- shopline_sdk/models/invoice.py +17 -0
- shopline_sdk/models/is_real_time_param.py +10 -0
- shopline_sdk/models/job.py +48 -0
- shopline_sdk/models/jobs.py +14 -0
- shopline_sdk/models/layout_sections.py +12 -0
- shopline_sdk/models/layouts_setting.py +14 -0
- shopline_sdk/models/limit_exceeded_error.py +14 -0
- shopline_sdk/models/link.py +39 -0
- shopline_sdk/models/lock_inventory.py +9 -0
- shopline_sdk/models/lock_inventory_count.py +14 -0
- shopline_sdk/models/max_applicable_member_point.py +16 -0
- shopline_sdk/models/media.py +16 -0
- shopline_sdk/models/media_upload_error.py +10 -0
- shopline_sdk/models/member_point.py +28 -0
- shopline_sdk/models/member_point_fulfillment.py +23 -0
- shopline_sdk/models/member_point_rule.py +40 -0
- shopline_sdk/models/member_point_rules.py +12 -0
- shopline_sdk/models/member_points.py +14 -0
- shopline_sdk/models/member_registration_analytics.py +29 -0
- shopline_sdk/models/membership_info.py +56 -0
- shopline_sdk/models/membership_tier.py +26 -0
- shopline_sdk/models/membership_tier_action_log.py +19 -0
- shopline_sdk/models/membership_tier_action_logs.py +14 -0
- shopline_sdk/models/membership_tier_rule.py +53 -0
- shopline_sdk/models/merchant.py +78 -0
- shopline_sdk/models/merchant_kyc.py +24 -0
- shopline_sdk/models/merchant_tax.py +50 -0
- shopline_sdk/models/metafield_definition.py +28 -0
- shopline_sdk/models/metafield_value.py +28 -0
- shopline_sdk/models/money.py +13 -0
- shopline_sdk/models/multipass_linking.py +22 -0
- shopline_sdk/models/multipass_linkings.py +16 -0
- shopline_sdk/models/multipass_secret.py +20 -0
- shopline_sdk/models/net_amount_analytics.py +28 -0
- shopline_sdk/models/net_orders_analytics.py +29 -0
- shopline_sdk/models/not_found_error.py +12 -0
- shopline_sdk/models/order.py +218 -0
- shopline_sdk/models/order_action_log.py +16 -0
- shopline_sdk/models/order_action_logs.py +12 -0
- shopline_sdk/models/order_agent.py +16 -0
- shopline_sdk/models/order_campaign_item.py +27 -0
- shopline_sdk/models/order_comment.py +28 -0
- shopline_sdk/models/order_conversation.py +39 -0
- shopline_sdk/models/order_conversations.py +14 -0
- shopline_sdk/models/order_conversations_message.py +32 -0
- shopline_sdk/models/order_conversations_messages.py +16 -0
- shopline_sdk/models/order_customer_info.py +24 -0
- shopline_sdk/models/order_delivery.py +57 -0
- shopline_sdk/models/order_delivery_address.py +37 -0
- shopline_sdk/models/order_delivery_data.py +28 -0
- shopline_sdk/models/order_inspect_item.py +18 -0
- shopline_sdk/models/order_invoice.py +32 -0
- shopline_sdk/models/order_item.py +93 -0
- shopline_sdk/models/order_payment.py +38 -0
- shopline_sdk/models/order_promotion_item.py +24 -0
- shopline_sdk/models/order_source.py +16 -0
- shopline_sdk/models/order_tag.py +10 -0
- shopline_sdk/models/order_transaction.py +32 -0
- shopline_sdk/models/orders_setting.py +25 -0
- shopline_sdk/models/page.py +49 -0
- shopline_sdk/models/page_block_settings.py +12 -0
- shopline_sdk/models/page_section.py +14 -0
- shopline_sdk/models/page_section_schema.py +37 -0
- shopline_sdk/models/page_section_settings.py +29 -0
- shopline_sdk/models/page_sections.py +12 -0
- shopline_sdk/models/paginatable.py +16 -0
- shopline_sdk/models/pagination.py +12 -0
- shopline_sdk/models/payment.py +33 -0
- shopline_sdk/models/payment_config_data.py +14 -0
- shopline_sdk/models/payment_fee_item.py +31 -0
- shopline_sdk/models/payment_settlement.py +47 -0
- shopline_sdk/models/payments_setting.py +17 -0
- shopline_sdk/models/pos_payment.py +19 -0
- shopline_sdk/models/pos_setting.py +15 -0
- shopline_sdk/models/price_detail.py +15 -0
- shopline_sdk/models/price_set.py +29 -0
- shopline_sdk/models/price_sets.py +12 -0
- shopline_sdk/models/product.py +201 -0
- shopline_sdk/models/product_feed_setting.py +45 -0
- shopline_sdk/models/product_feed_settings.py +14 -0
- shopline_sdk/models/product_ids_param.py +10 -0
- shopline_sdk/models/product_price_tier.py +26 -0
- shopline_sdk/models/product_related_theme_settings.py +23 -0
- shopline_sdk/models/product_revenue.py +26 -0
- shopline_sdk/models/product_revenues.py +14 -0
- shopline_sdk/models/product_review.py +28 -0
- shopline_sdk/models/product_review_comment.py +31 -0
- shopline_sdk/models/product_review_comments.py +14 -0
- shopline_sdk/models/product_review_comments_cursor_based.py +15 -0
- shopline_sdk/models/product_review_setting.py +32 -0
- shopline_sdk/models/product_reviews.py +14 -0
- shopline_sdk/models/product_stock.py +34 -0
- shopline_sdk/models/product_subscription.py +34 -0
- shopline_sdk/models/product_variation.py +56 -0
- shopline_sdk/models/products_cursor_based.py +17 -0
- shopline_sdk/models/products_setting.py +28 -0
- shopline_sdk/models/promotion.py +104 -0
- shopline_sdk/models/promotion_condition.py +27 -0
- shopline_sdk/models/promotion_excluded_hints.py +16 -0
- shopline_sdk/models/promotions_setting.py +28 -0
- shopline_sdk/models/purchase_order.py +63 -0
- shopline_sdk/models/purchase_order_item.py +66 -0
- shopline_sdk/models/purchase_orders.py +14 -0
- shopline_sdk/models/quantity_update_not_allowed_error.py +14 -0
- shopline_sdk/models/retail_status.py +11 -0
- shopline_sdk/models/return_order.py +75 -0
- shopline_sdk/models/return_order_delivery.py +26 -0
- shopline_sdk/models/return_order_delivery_address.py +37 -0
- shopline_sdk/models/return_order_delivery_data.py +28 -0
- shopline_sdk/models/return_order_item.py +33 -0
- shopline_sdk/models/return_order_payment.py +28 -0
- shopline_sdk/models/return_order_promotion_item.py +22 -0
- shopline_sdk/models/return_order_ref_data.py +10 -0
- shopline_sdk/models/return_orders.py +14 -0
- shopline_sdk/models/sale_comment.py +30 -0
- shopline_sdk/models/sale_customer.py +31 -0
- shopline_sdk/models/sale_product.py +21 -0
- shopline_sdk/models/save_draft_body.py +25 -0
- shopline_sdk/models/sc_conversation.py +31 -0
- shopline_sdk/models/sc_conversations.py +14 -0
- shopline_sdk/models/sc_conversations_message.py +30 -0
- shopline_sdk/models/sc_conversations_messages.py +16 -0
- shopline_sdk/models/search_products_body.py +71 -0
- shopline_sdk/models/server_error.py +12 -0
- shopline_sdk/models/service_unavailable_error.py +12 -0
- shopline_sdk/models/settings.py +30 -0
- shopline_sdk/models/settlement_terminal_list.py +9 -0
- shopline_sdk/models/shop_conversation.py +31 -0
- shopline_sdk/models/shop_conversations.py +14 -0
- shopline_sdk/models/shop_conversations_message.py +30 -0
- shopline_sdk/models/shop_conversations_messages.py +16 -0
- shopline_sdk/models/shop_crm_setting.py +24 -0
- shopline_sdk/models/shop_setting.py +10 -0
- shopline_sdk/models/staff.py +61 -0
- shopline_sdk/models/staff_performance.py +9 -0
- shopline_sdk/models/start_date_param.py +10 -0
- shopline_sdk/models/status.py +11 -0
- shopline_sdk/models/stock.py +12 -0
- shopline_sdk/models/store_credit.py +50 -0
- shopline_sdk/models/store_credit_fulfillment.py +27 -0
- shopline_sdk/models/storefront_o_auth_application.py +18 -0
- shopline_sdk/models/storefront_o_auth_applications.py +12 -0
- shopline_sdk/models/storefront_token.py +26 -0
- shopline_sdk/models/storefront_token_merchant.py +17 -0
- shopline_sdk/models/storefront_token_staff.py +15 -0
- shopline_sdk/models/storefront_tokens.py +12 -0
- shopline_sdk/models/supplier.py +24 -0
- shopline_sdk/models/tag.py +16 -0
- shopline_sdk/models/taggable.py +9 -0
- shopline_sdk/models/tax.py +57 -0
- shopline_sdk/models/tax_info.py +22 -0
- shopline_sdk/models/tax_region.py +20 -0
- shopline_sdk/models/tax_setting.py +10 -0
- shopline_sdk/models/theme.py +44 -0
- shopline_sdk/models/theme_schema.py +19 -0
- shopline_sdk/models/theme_setting.py +16 -0
- shopline_sdk/models/third_party_ads_setting.py +38 -0
- shopline_sdk/models/token_scopes.py +10 -0
- shopline_sdk/models/top_products_analytics.py +19 -0
- shopline_sdk/models/top_products_analytics_record.py +30 -0
- shopline_sdk/models/top_products_analytics_record_variation.py +34 -0
- shopline_sdk/models/total_sessions_analytics.py +35 -0
- shopline_sdk/models/total_views_analytics.py +29 -0
- shopline_sdk/models/transaction.py +65 -0
- shopline_sdk/models/translatable.py +28 -0
- shopline_sdk/models/translatable_array.py +28 -0
- shopline_sdk/models/unauthorized_error.py +14 -0
- shopline_sdk/models/unprocessable_entity_error.py +16 -0
- shopline_sdk/models/update_addon_product_body.py +36 -0
- shopline_sdk/models/update_agent_body.py +15 -0
- shopline_sdk/models/update_app_metafield_body.py +14 -0
- shopline_sdk/models/update_category_body.py +28 -0
- shopline_sdk/models/update_channel_price_body.py +21 -0
- shopline_sdk/models/update_customer_body.py +62 -0
- shopline_sdk/models/update_customer_group_activity_body.py +22 -0
- shopline_sdk/models/update_event_tracker_body.py +27 -0
- shopline_sdk/models/update_flash_price_campaign_body.py +22 -0
- shopline_sdk/models/update_gift_body.py +20 -0
- shopline_sdk/models/update_lock_inventory_body.py +21 -0
- shopline_sdk/models/update_metafield_body.py +14 -0
- shopline_sdk/models/update_product_body.py +66 -0
- shopline_sdk/models/update_product_feed_setting_body.py +27 -0
- shopline_sdk/models/update_product_review_comment_body.py +18 -0
- shopline_sdk/models/update_product_variation_body.py +34 -0
- shopline_sdk/models/update_promotion_body.py +71 -0
- shopline_sdk/models/update_return_order_body.py +17 -0
- shopline_sdk/models/update_webhook_body.py +14 -0
- shopline_sdk/models/user_coupon.py +12 -0
- shopline_sdk/models/user_coupons.py +14 -0
- shopline_sdk/models/user_credit_rule.py +40 -0
- shopline_sdk/models/users_setting.py +83 -0
- shopline_sdk/models/utm_data.py +20 -0
- shopline_sdk/models/warehouse.py +14 -0
- shopline_sdk/models/warehouses_cursor_based.py +17 -0
- shopline_sdk/models/webhook.py +23 -0
- shopline_sdk/models/webhooks.py +14 -0
- shopline_sdk/models/wish_list_item.py +41 -0
- shopline_sdk/models/wish_list_items.py +15 -0
- shopline_sdk_python-0.1.0.dist-info/METADATA +265 -0
- shopline_sdk_python-0.1.0.dist-info/RECORD +638 -0
- shopline_sdk_python-0.1.0.dist-info/WHEEL +5 -0
- shopline_sdk_python-0.1.0.dist-info/licenses/LICENSE +674 -0
- shopline_sdk_python-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.stock import Stock
|
|
11
|
+
from ...models.translatable import Translatable
|
|
12
|
+
|
|
13
|
+
class Request(BaseModel):
|
|
14
|
+
"""查询参数模型"""
|
|
15
|
+
excludes: Optional[List[str]] = None
|
|
16
|
+
"""Could exclude certain parameters in the response
|
|
17
|
+
結果要排除哪些參數"""
|
|
18
|
+
fields: Optional[List[str]] = None
|
|
19
|
+
"""Could only show certain parameters in the response
|
|
20
|
+
結果只顯示哪些參數"""
|
|
21
|
+
|
|
22
|
+
class Response(BaseModel):
|
|
23
|
+
"""响应体模型"""
|
|
24
|
+
id: Optional[str] = None
|
|
25
|
+
title_translations: Optional[Translatable] = None
|
|
26
|
+
stocks: Optional[List[Stock]] = None
|
|
27
|
+
|
|
28
|
+
async def call(
|
|
29
|
+
session: aiohttp.ClientSession, id: str, request: Optional[Request] = None
|
|
30
|
+
) -> Response:
|
|
31
|
+
"""
|
|
32
|
+
Get Product Stocks
|
|
33
|
+
|
|
34
|
+
To get stock information for a specific product with its ID
|
|
35
|
+
使用商品 ID 獲取特定一個商品的庫存資料
|
|
36
|
+
|
|
37
|
+
Path: GET /products/{id}/stocks
|
|
38
|
+
"""
|
|
39
|
+
# 构建请求 URL
|
|
40
|
+
url = f"products/{id}/stocks"
|
|
41
|
+
|
|
42
|
+
# 构建查询参数
|
|
43
|
+
params = {}
|
|
44
|
+
if request:
|
|
45
|
+
request_dict = request.model_dump(exclude_none=True)
|
|
46
|
+
for key, value in request_dict.items():
|
|
47
|
+
if value is not None:
|
|
48
|
+
params[key] = value
|
|
49
|
+
|
|
50
|
+
# 构建请求头
|
|
51
|
+
headers = {"Content-Type": "application/json"}
|
|
52
|
+
|
|
53
|
+
# 发起 HTTP 请求
|
|
54
|
+
async with session.get(
|
|
55
|
+
url, params=params, headers=headers
|
|
56
|
+
) as response:
|
|
57
|
+
if response.status >= 400:
|
|
58
|
+
error_data = await response.json()
|
|
59
|
+
raise ShoplineAPIError(
|
|
60
|
+
status_code=response.status,
|
|
61
|
+
**error_data
|
|
62
|
+
)
|
|
63
|
+
response_data = await response.json()
|
|
64
|
+
|
|
65
|
+
# 验证并返回响应数据
|
|
66
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.paginatable import Paginatable
|
|
11
|
+
from ...models.product import Product
|
|
12
|
+
from ...models.server_error import ServerError
|
|
13
|
+
from ...models.unprocessable_entity_error import UnprocessableEntityError
|
|
14
|
+
|
|
15
|
+
class Request(BaseModel):
|
|
16
|
+
"""查询参数模型"""
|
|
17
|
+
previous_id: Optional[str] = None
|
|
18
|
+
"""The last ID of the products in the previous request.
|
|
19
|
+
前一筆商品的 ID
|
|
20
|
+
beta 測試中,僅開放部分店家使用,如無法使用功能請聯絡客服窗口"""
|
|
21
|
+
sort_by: Optional[Literal['asc', 'desc']] = None
|
|
22
|
+
"""Setting sort by created time
|
|
23
|
+
設定創建時間排序"""
|
|
24
|
+
per_page: Optional[int] = None
|
|
25
|
+
"""Numbers of Products per page
|
|
26
|
+
每頁顯示 n 筆資料"""
|
|
27
|
+
page: Optional[int] = None
|
|
28
|
+
"""Page Number
|
|
29
|
+
頁數"""
|
|
30
|
+
excludes: Optional[str] = None
|
|
31
|
+
"""Could exclude certain parameters in the response
|
|
32
|
+
結果要排除哪些參數"""
|
|
33
|
+
fields: Optional[List[str]] = None
|
|
34
|
+
"""Could only show certain parameters in the response
|
|
35
|
+
結果只顯示哪些參數"""
|
|
36
|
+
id: Optional[str] = None
|
|
37
|
+
"""Only show specific products based on IDs
|
|
38
|
+
結果只顯示哪些商品"""
|
|
39
|
+
include_fields: Optional[List[Literal['labels', 'metafields', 'bundle_set', 'type']]] = None
|
|
40
|
+
"""Provide additional attributes in the response
|
|
41
|
+
結果添加哪些參數"""
|
|
42
|
+
with_product_set: Optional[bool] = None
|
|
43
|
+
"""Return product_set or not
|
|
44
|
+
是否回傳組合商品"""
|
|
45
|
+
updated_after: Optional[str] = None
|
|
46
|
+
"""Filter products by specific updated_after time.
|
|
47
|
+
取得大於等於指定時間的商品
|
|
48
|
+
*Should use UTC time'"""
|
|
49
|
+
updated_before: Optional[str] = None
|
|
50
|
+
"""Filter products by specific updated_before time.
|
|
51
|
+
取得小於等於指定時間的商品
|
|
52
|
+
*Should use UTC time'"""
|
|
53
|
+
|
|
54
|
+
class Response(BaseModel):
|
|
55
|
+
"""响应体模型"""
|
|
56
|
+
items: Optional[List[Product]] = None
|
|
57
|
+
pagination: Optional[Paginatable] = None
|
|
58
|
+
|
|
59
|
+
async def call(
|
|
60
|
+
session: aiohttp.ClientSession, request: Optional[Request] = None
|
|
61
|
+
) -> Response:
|
|
62
|
+
"""
|
|
63
|
+
Get Products
|
|
64
|
+
|
|
65
|
+
To get detailed information of couple products sorted by time
|
|
66
|
+
利用時間範圍選取與排序獲取數筆商品資料
|
|
67
|
+
|
|
68
|
+
Path: GET /products
|
|
69
|
+
"""
|
|
70
|
+
# 构建请求 URL
|
|
71
|
+
url = "products"
|
|
72
|
+
|
|
73
|
+
# 构建查询参数
|
|
74
|
+
params = {}
|
|
75
|
+
if request:
|
|
76
|
+
request_dict = request.model_dump(exclude_none=True)
|
|
77
|
+
for key, value in request_dict.items():
|
|
78
|
+
if value is not None:
|
|
79
|
+
params[key] = value
|
|
80
|
+
|
|
81
|
+
# 构建请求头
|
|
82
|
+
headers = {"Content-Type": "application/json"}
|
|
83
|
+
|
|
84
|
+
# 发起 HTTP 请求
|
|
85
|
+
async with session.get(
|
|
86
|
+
url, params=params, headers=headers
|
|
87
|
+
) as response:
|
|
88
|
+
if response.status >= 400:
|
|
89
|
+
error_data = await response.json()
|
|
90
|
+
if response.status == 422:
|
|
91
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
92
|
+
raise ShoplineAPIError(
|
|
93
|
+
status_code=422,
|
|
94
|
+
error=error_model,
|
|
95
|
+
**error_data
|
|
96
|
+
)
|
|
97
|
+
if response.status == 500:
|
|
98
|
+
error_model = ServerError(**error_data)
|
|
99
|
+
raise ShoplineAPIError(
|
|
100
|
+
status_code=500,
|
|
101
|
+
error=error_model,
|
|
102
|
+
**error_data
|
|
103
|
+
)
|
|
104
|
+
# 默认错误处理
|
|
105
|
+
raise ShoplineAPIError(
|
|
106
|
+
status_code=response.status,
|
|
107
|
+
**error_data
|
|
108
|
+
)
|
|
109
|
+
response_data = await response.json()
|
|
110
|
+
|
|
111
|
+
# 验证并返回响应数据
|
|
112
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.product import Product
|
|
11
|
+
from ...models.server_error import ServerError
|
|
12
|
+
|
|
13
|
+
class Response(BaseModel):
|
|
14
|
+
"""响应体模型"""
|
|
15
|
+
items: Optional[List[Product]] = None
|
|
16
|
+
|
|
17
|
+
async def call(
|
|
18
|
+
session: aiohttp.ClientSession, data: Optional[Dict[str, Any]] = None
|
|
19
|
+
) -> Response:
|
|
20
|
+
"""
|
|
21
|
+
Search Products
|
|
22
|
+
|
|
23
|
+
To search products with specific conditions.
|
|
24
|
+
利用特殊條件搜尋商品列表。
|
|
25
|
+
|
|
26
|
+
Path: POST /products/search
|
|
27
|
+
"""
|
|
28
|
+
# 构建请求 URL
|
|
29
|
+
url = "products/search"
|
|
30
|
+
|
|
31
|
+
# 构建请求头
|
|
32
|
+
headers = {"Content-Type": "application/json"}
|
|
33
|
+
|
|
34
|
+
# 构建请求体
|
|
35
|
+
json_data = data if data else None
|
|
36
|
+
|
|
37
|
+
# 发起 HTTP 请求
|
|
38
|
+
async with session.post(
|
|
39
|
+
url, json=json_data, headers=headers
|
|
40
|
+
) as response:
|
|
41
|
+
if response.status >= 400:
|
|
42
|
+
error_data = await response.json()
|
|
43
|
+
if response.status == 500:
|
|
44
|
+
error_model = ServerError(**error_data)
|
|
45
|
+
raise ShoplineAPIError(
|
|
46
|
+
status_code=500,
|
|
47
|
+
error=error_model,
|
|
48
|
+
**error_data
|
|
49
|
+
)
|
|
50
|
+
# 默认错误处理
|
|
51
|
+
raise ShoplineAPIError(
|
|
52
|
+
status_code=response.status,
|
|
53
|
+
**error_data
|
|
54
|
+
)
|
|
55
|
+
response_data = await response.json()
|
|
56
|
+
|
|
57
|
+
# 验证并返回响应数据
|
|
58
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.server_error import ServerError
|
|
11
|
+
from ...models.unprocessable_entity_error import UnprocessableEntityError
|
|
12
|
+
|
|
13
|
+
class Request(BaseModel):
|
|
14
|
+
"""请求体模型"""
|
|
15
|
+
update_mode: Literal['add', 'remove']
|
|
16
|
+
"""Update mode of this opearation, allow "add" or "remove"
|
|
17
|
+
更新商品標簽的方式,可選"add"或"remove"。"""
|
|
18
|
+
tags: List[str]
|
|
19
|
+
"""Product tags array
|
|
20
|
+
商品標簽array"""
|
|
21
|
+
|
|
22
|
+
class Response(BaseModel):
|
|
23
|
+
"""响应体模型"""
|
|
24
|
+
tags: Optional[List[str]] = None
|
|
25
|
+
|
|
26
|
+
async def call(
|
|
27
|
+
session: aiohttp.ClientSession, productId: str, request: Optional[Request] = None
|
|
28
|
+
) -> Response:
|
|
29
|
+
"""
|
|
30
|
+
Update (add/remove) current product tags
|
|
31
|
+
|
|
32
|
+
Add or Remove current product tags with input tags array.
|
|
33
|
+
Each tag mush have at least 3 characters and at most 40 characters.
|
|
34
|
+
When update with invalid length of tags, the update will fail and the respond will be 422.
|
|
35
|
+
Must pass at least one tag, otherwise the update will fail and the respond will be 422.
|
|
36
|
+
在現有的商品標簽新增/移除標簽。
|
|
37
|
+
每一個商品標籤必須有最少3個字完及最多40個字完。
|
|
38
|
+
若需更新的商品標籤其中之一不符字完長度規範,更新不會成功及將回傳狀態碼422。
|
|
39
|
+
必須最少新增/移除一個標籤,否則更新不會成功及將回傳狀態碼422。
|
|
40
|
+
|
|
41
|
+
Path: PATCH /products/{productId}/tags
|
|
42
|
+
"""
|
|
43
|
+
# 构建请求 URL
|
|
44
|
+
url = f"products/{productId}/tags"
|
|
45
|
+
|
|
46
|
+
# 构建请求头
|
|
47
|
+
headers = {"Content-Type": "application/json"}
|
|
48
|
+
|
|
49
|
+
# 构建请求体
|
|
50
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
51
|
+
|
|
52
|
+
# 发起 HTTP 请求
|
|
53
|
+
async with session.patch(
|
|
54
|
+
url, json=json_data, headers=headers
|
|
55
|
+
) as response:
|
|
56
|
+
if response.status >= 400:
|
|
57
|
+
error_data = await response.json()
|
|
58
|
+
if response.status == 422:
|
|
59
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
60
|
+
raise ShoplineAPIError(
|
|
61
|
+
status_code=422,
|
|
62
|
+
error=error_model,
|
|
63
|
+
**error_data
|
|
64
|
+
)
|
|
65
|
+
if response.status == 500:
|
|
66
|
+
error_model = ServerError(**error_data)
|
|
67
|
+
raise ShoplineAPIError(
|
|
68
|
+
status_code=500,
|
|
69
|
+
error=error_model,
|
|
70
|
+
**error_data
|
|
71
|
+
)
|
|
72
|
+
# 默认错误处理
|
|
73
|
+
raise ShoplineAPIError(
|
|
74
|
+
status_code=response.status,
|
|
75
|
+
**error_data
|
|
76
|
+
)
|
|
77
|
+
response_data = await response.json()
|
|
78
|
+
|
|
79
|
+
# 验证并返回响应数据
|
|
80
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.product import Product
|
|
11
|
+
from ...models.server_error import ServerError
|
|
12
|
+
|
|
13
|
+
async def call(
|
|
14
|
+
session: aiohttp.ClientSession, id: str, data: Optional[Dict[str, Any]] = None
|
|
15
|
+
) -> Product:
|
|
16
|
+
"""
|
|
17
|
+
Update Product
|
|
18
|
+
|
|
19
|
+
To update current product information with open API.
|
|
20
|
+
透過open API更新既有商品資訊
|
|
21
|
+
|
|
22
|
+
Path: PUT /products/{id}
|
|
23
|
+
"""
|
|
24
|
+
# 构建请求 URL
|
|
25
|
+
url = f"products/{id}"
|
|
26
|
+
|
|
27
|
+
# 构建请求头
|
|
28
|
+
headers = {"Content-Type": "application/json"}
|
|
29
|
+
|
|
30
|
+
# 构建请求体
|
|
31
|
+
json_data = data if data else None
|
|
32
|
+
|
|
33
|
+
# 发起 HTTP 请求
|
|
34
|
+
async with session.put(
|
|
35
|
+
url, json=json_data, headers=headers
|
|
36
|
+
) as response:
|
|
37
|
+
if response.status >= 400:
|
|
38
|
+
error_data = await response.json()
|
|
39
|
+
if response.status == 500:
|
|
40
|
+
error_model = ServerError(**error_data)
|
|
41
|
+
raise ShoplineAPIError(
|
|
42
|
+
status_code=500,
|
|
43
|
+
error=error_model,
|
|
44
|
+
**error_data
|
|
45
|
+
)
|
|
46
|
+
# 默认错误处理
|
|
47
|
+
raise ShoplineAPIError(
|
|
48
|
+
status_code=response.status,
|
|
49
|
+
**error_data
|
|
50
|
+
)
|
|
51
|
+
response_data = await response.json()
|
|
52
|
+
|
|
53
|
+
# 验证并返回响应数据
|
|
54
|
+
return Product(**response_data)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.bad_request_error import BadRequestError
|
|
11
|
+
from ...models.not_found_error import NotFoundError
|
|
12
|
+
from ...models.product import Product
|
|
13
|
+
from ...models.server_error import ServerError
|
|
14
|
+
from ...models.unprocessable_entity_error import UnprocessableEntityError
|
|
15
|
+
|
|
16
|
+
class Request(BaseModel):
|
|
17
|
+
"""请求体模型"""
|
|
18
|
+
price: Optional[float] = None
|
|
19
|
+
"""Price (Note: Cannot be set to null. Product with a price of 0 cannot be sold.)
|
|
20
|
+
原價格 (備註:不能設定為null。價格為0的商品不能被售出)"""
|
|
21
|
+
price_sale: Optional[float] = None
|
|
22
|
+
"""Price on sale (Note: Cannot be set to null.
|
|
23
|
+
Product with a price_sale of 0 will be sold at its original price.)
|
|
24
|
+
|
|
25
|
+
特價 (備註:不能設定為null。特價為0的商品會以原價售出)"""
|
|
26
|
+
cost: Optional[float] = None
|
|
27
|
+
"""Cost (Note: Cannot be set to null)
|
|
28
|
+
成本 (備註:不能設定為null)"""
|
|
29
|
+
member_price: Optional[float] = None
|
|
30
|
+
"""Member Price
|
|
31
|
+
會員價"""
|
|
32
|
+
retail_price: Optional[float] = None
|
|
33
|
+
"""Retail Price
|
|
34
|
+
零售價"""
|
|
35
|
+
product_price_tiers: Optional[Dict[str, str]] = None
|
|
36
|
+
"""Membership tier's ID
|
|
37
|
+
會員等級ID"""
|
|
38
|
+
|
|
39
|
+
async def call(
|
|
40
|
+
session: aiohttp.ClientSession, productId: str, request: Optional[Request] = None
|
|
41
|
+
) -> Product:
|
|
42
|
+
"""
|
|
43
|
+
Update Product Price
|
|
44
|
+
|
|
45
|
+
To update product's price with open API
|
|
46
|
+
透過open API 更新商品價格
|
|
47
|
+
|
|
48
|
+
Path: PUT /products/{productId}/update_price
|
|
49
|
+
"""
|
|
50
|
+
# 构建请求 URL
|
|
51
|
+
url = f"products/{productId}/update_price"
|
|
52
|
+
|
|
53
|
+
# 构建请求头
|
|
54
|
+
headers = {"Content-Type": "application/json"}
|
|
55
|
+
|
|
56
|
+
# 构建请求体
|
|
57
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
58
|
+
|
|
59
|
+
# 发起 HTTP 请求
|
|
60
|
+
async with session.put(
|
|
61
|
+
url, json=json_data, headers=headers
|
|
62
|
+
) as response:
|
|
63
|
+
if response.status >= 400:
|
|
64
|
+
error_data = await response.json()
|
|
65
|
+
if response.status == 404:
|
|
66
|
+
error_model = NotFoundError(**error_data)
|
|
67
|
+
raise ShoplineAPIError(
|
|
68
|
+
status_code=404,
|
|
69
|
+
error=error_model,
|
|
70
|
+
**error_data
|
|
71
|
+
)
|
|
72
|
+
if response.status == 422:
|
|
73
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
74
|
+
raise ShoplineAPIError(
|
|
75
|
+
status_code=422,
|
|
76
|
+
error=error_model,
|
|
77
|
+
**error_data
|
|
78
|
+
)
|
|
79
|
+
if response.status == 500:
|
|
80
|
+
error_model = ServerError(**error_data)
|
|
81
|
+
raise ShoplineAPIError(
|
|
82
|
+
status_code=500,
|
|
83
|
+
error=error_model,
|
|
84
|
+
**error_data
|
|
85
|
+
)
|
|
86
|
+
# 默认错误处理
|
|
87
|
+
raise ShoplineAPIError(
|
|
88
|
+
status_code=response.status,
|
|
89
|
+
**error_data
|
|
90
|
+
)
|
|
91
|
+
response_data = await response.json()
|
|
92
|
+
|
|
93
|
+
# 验证并返回响应数据
|
|
94
|
+
return Product(**response_data)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.bad_request_error import BadRequestError
|
|
11
|
+
from ...models.not_found_error import NotFoundError
|
|
12
|
+
from ...models.product import Product
|
|
13
|
+
from ...models.server_error import ServerError
|
|
14
|
+
from ...models.unprocessable_entity_error import UnprocessableEntityError
|
|
15
|
+
|
|
16
|
+
class Request(BaseModel):
|
|
17
|
+
"""请求体模型"""
|
|
18
|
+
quantity: float
|
|
19
|
+
"""This value should be between -9999999 and 9999999.
|
|
20
|
+
數值必須在 -9999999 和 9999999 之間。"""
|
|
21
|
+
replace: Optional[bool] = None
|
|
22
|
+
"""Whether replacing the original quantity
|
|
23
|
+
是否取代原本數量
|
|
24
|
+
-
|
|
25
|
+
true: replace the product's quantity with the number you provided
|
|
26
|
+
取代原本數量
|
|
27
|
+
|
|
28
|
+
false: increase/decrease the quantity with the number you provided
|
|
29
|
+
增加/減少數量
|
|
30
|
+
|
|
31
|
+
" """
|
|
32
|
+
|
|
33
|
+
class Response(BaseModel):
|
|
34
|
+
"""响应体模型"""
|
|
35
|
+
id: Optional[str] = None
|
|
36
|
+
sku: Optional[str] = None
|
|
37
|
+
quantity: Optional[float] = None
|
|
38
|
+
updated_at: Optional[str] = None
|
|
39
|
+
|
|
40
|
+
async def call(
|
|
41
|
+
session: aiohttp.ClientSession, id: str, request: Optional[Request] = None
|
|
42
|
+
) -> Response:
|
|
43
|
+
"""
|
|
44
|
+
Update Product Quantity
|
|
45
|
+
|
|
46
|
+
To update product's quantity with open API
|
|
47
|
+
透過open API 更新主商品數量
|
|
48
|
+
|
|
49
|
+
Path: PUT /products/{id}/update_quantity
|
|
50
|
+
"""
|
|
51
|
+
# 构建请求 URL
|
|
52
|
+
url = f"products/{id}/update_quantity"
|
|
53
|
+
|
|
54
|
+
# 构建请求头
|
|
55
|
+
headers = {"Content-Type": "application/json"}
|
|
56
|
+
|
|
57
|
+
# 构建请求体
|
|
58
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
59
|
+
|
|
60
|
+
# 发起 HTTP 请求
|
|
61
|
+
async with session.put(
|
|
62
|
+
url, json=json_data, headers=headers
|
|
63
|
+
) as response:
|
|
64
|
+
if response.status >= 400:
|
|
65
|
+
error_data = await response.json()
|
|
66
|
+
if response.status == 403:
|
|
67
|
+
error_model = BadRequestError(**error_data)
|
|
68
|
+
raise ShoplineAPIError(
|
|
69
|
+
status_code=403,
|
|
70
|
+
error=error_model,
|
|
71
|
+
**error_data
|
|
72
|
+
)
|
|
73
|
+
if response.status == 404:
|
|
74
|
+
error_model = NotFoundError(**error_data)
|
|
75
|
+
raise ShoplineAPIError(
|
|
76
|
+
status_code=404,
|
|
77
|
+
error=error_model,
|
|
78
|
+
**error_data
|
|
79
|
+
)
|
|
80
|
+
if response.status == 422:
|
|
81
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
82
|
+
raise ShoplineAPIError(
|
|
83
|
+
status_code=422,
|
|
84
|
+
error=error_model,
|
|
85
|
+
**error_data
|
|
86
|
+
)
|
|
87
|
+
if response.status == 500:
|
|
88
|
+
error_model = ServerError(**error_data)
|
|
89
|
+
raise ShoplineAPIError(
|
|
90
|
+
status_code=500,
|
|
91
|
+
error=error_model,
|
|
92
|
+
**error_data
|
|
93
|
+
)
|
|
94
|
+
# 默认错误处理
|
|
95
|
+
raise ShoplineAPIError(
|
|
96
|
+
status_code=response.status,
|
|
97
|
+
**error_data
|
|
98
|
+
)
|
|
99
|
+
response_data = await response.json()
|
|
100
|
+
|
|
101
|
+
# 验证并返回响应数据
|
|
102
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import aiohttp
|
|
3
|
+
from pydantic import BaseModel, ValidationError, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
# 导入异常类
|
|
7
|
+
from ...exceptions import ShoplineAPIError
|
|
8
|
+
|
|
9
|
+
# 导入需要的模型
|
|
10
|
+
from ...models.product import Product
|
|
11
|
+
|
|
12
|
+
async def call(
|
|
13
|
+
session: aiohttp.ClientSession, product_id: str, id: str, data: Optional[Dict[str, Any]] = None
|
|
14
|
+
) -> Product:
|
|
15
|
+
"""
|
|
16
|
+
Update Product Variation
|
|
17
|
+
|
|
18
|
+
Update information of an existing product variation.
|
|
19
|
+
針對現有規格商品做訊息更新
|
|
20
|
+
|
|
21
|
+
Path: PUT /products/{product_id}/variations/{id}
|
|
22
|
+
"""
|
|
23
|
+
# 构建请求 URL
|
|
24
|
+
url = f"products/{product_id}/variations/{id}"
|
|
25
|
+
|
|
26
|
+
# 构建请求头
|
|
27
|
+
headers = {"Content-Type": "application/json"}
|
|
28
|
+
|
|
29
|
+
# 构建请求体
|
|
30
|
+
json_data = data if data else None
|
|
31
|
+
|
|
32
|
+
# 发起 HTTP 请求
|
|
33
|
+
async with session.put(
|
|
34
|
+
url, json=json_data, headers=headers
|
|
35
|
+
) as response:
|
|
36
|
+
if response.status >= 400:
|
|
37
|
+
error_data = await response.json()
|
|
38
|
+
# 默认错误处理
|
|
39
|
+
raise ShoplineAPIError(
|
|
40
|
+
status_code=response.status,
|
|
41
|
+
**error_data
|
|
42
|
+
)
|
|
43
|
+
response_data = await response.json()
|
|
44
|
+
|
|
45
|
+
# 验证并返回响应数据
|
|
46
|
+
return Product(**response_data)
|