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,92 @@
|
|
|
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_variation import ProductVariation
|
|
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
|
+
"""Product Sale Price
|
|
23
|
+
特價"""
|
|
24
|
+
cost: Optional[float] = None
|
|
25
|
+
"""Product Cost
|
|
26
|
+
成本價"""
|
|
27
|
+
member_price: Optional[float] = None
|
|
28
|
+
"""Member Price
|
|
29
|
+
會員價"""
|
|
30
|
+
retail_price: Optional[float] = None
|
|
31
|
+
"""Retail Price
|
|
32
|
+
零售價"""
|
|
33
|
+
product_price_tiers: Optional[Dict[str, str]] = None
|
|
34
|
+
"""Membership tier's ID
|
|
35
|
+
會員等級ID"""
|
|
36
|
+
|
|
37
|
+
async def call(
|
|
38
|
+
session: aiohttp.ClientSession, product_id: str, id: str, request: Optional[Request] = None
|
|
39
|
+
) -> ProductVariation:
|
|
40
|
+
"""
|
|
41
|
+
Update Product Variation Price
|
|
42
|
+
|
|
43
|
+
To update product variation's price with open API
|
|
44
|
+
透過open API 更新規格金額
|
|
45
|
+
|
|
46
|
+
Path: PUT /products/{product_id}/variations/{id}/update_price
|
|
47
|
+
"""
|
|
48
|
+
# 构建请求 URL
|
|
49
|
+
url = f"products/{product_id}/variations/{id}/update_price"
|
|
50
|
+
|
|
51
|
+
# 构建请求头
|
|
52
|
+
headers = {"Content-Type": "application/json"}
|
|
53
|
+
|
|
54
|
+
# 构建请求体
|
|
55
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
56
|
+
|
|
57
|
+
# 发起 HTTP 请求
|
|
58
|
+
async with session.put(
|
|
59
|
+
url, json=json_data, headers=headers
|
|
60
|
+
) as response:
|
|
61
|
+
if response.status >= 400:
|
|
62
|
+
error_data = await response.json()
|
|
63
|
+
if response.status == 404:
|
|
64
|
+
error_model = NotFoundError(**error_data)
|
|
65
|
+
raise ShoplineAPIError(
|
|
66
|
+
status_code=404,
|
|
67
|
+
error=error_model,
|
|
68
|
+
**error_data
|
|
69
|
+
)
|
|
70
|
+
if response.status == 422:
|
|
71
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
72
|
+
raise ShoplineAPIError(
|
|
73
|
+
status_code=422,
|
|
74
|
+
error=error_model,
|
|
75
|
+
**error_data
|
|
76
|
+
)
|
|
77
|
+
if response.status == 500:
|
|
78
|
+
error_model = ServerError(**error_data)
|
|
79
|
+
raise ShoplineAPIError(
|
|
80
|
+
status_code=500,
|
|
81
|
+
error=error_model,
|
|
82
|
+
**error_data
|
|
83
|
+
)
|
|
84
|
+
# 默认错误处理
|
|
85
|
+
raise ShoplineAPIError(
|
|
86
|
+
status_code=response.status,
|
|
87
|
+
**error_data
|
|
88
|
+
)
|
|
89
|
+
response_data = await response.json()
|
|
90
|
+
|
|
91
|
+
# 验证并返回响应数据
|
|
92
|
+
return ProductVariation(**response_data)
|
|
@@ -0,0 +1,111 @@
|
|
|
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_variation import ProductVariation
|
|
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
|
+
"""Quantity
|
|
20
|
+
(新增/減少)商品數量
|
|
21
|
+
-
|
|
22
|
+
This value should be between -9999999 and 9999999.
|
|
23
|
+
數值必須在 -9999999 和 9999999 之間。"""
|
|
24
|
+
replace: Optional[bool] = None
|
|
25
|
+
"""Whether replacing the original quantity
|
|
26
|
+
是否取代原本數量
|
|
27
|
+
-
|
|
28
|
+
true: replace the product's quantity with the number you provided
|
|
29
|
+
取代原本數量
|
|
30
|
+
|
|
31
|
+
false: increase/decrease the quantity with the number you provided
|
|
32
|
+
增加/減少數量"""
|
|
33
|
+
|
|
34
|
+
class Response(BaseModel):
|
|
35
|
+
"""响应体模型"""
|
|
36
|
+
id: Optional[str] = None
|
|
37
|
+
sku: Optional[str] = None
|
|
38
|
+
quantity: Optional[float] = None
|
|
39
|
+
updated_at: Optional[str] = None
|
|
40
|
+
product_id: Optional[str] = None
|
|
41
|
+
|
|
42
|
+
async def call(
|
|
43
|
+
session: aiohttp.ClientSession, product_id: str, id: str, request: Optional[Request] = None
|
|
44
|
+
) -> Response:
|
|
45
|
+
"""
|
|
46
|
+
Update Product Variation Quantity
|
|
47
|
+
|
|
48
|
+
To update product variation's quantity with open API
|
|
49
|
+
透過open API 更新規格數量
|
|
50
|
+
|
|
51
|
+
Path: PUT /products/{product_id}/variations/{id}/update_quantity
|
|
52
|
+
"""
|
|
53
|
+
# 构建请求 URL
|
|
54
|
+
url = f"products/{product_id}/variations/{id}/update_quantity"
|
|
55
|
+
|
|
56
|
+
# 构建请求头
|
|
57
|
+
headers = {"Content-Type": "application/json"}
|
|
58
|
+
|
|
59
|
+
# 构建请求体
|
|
60
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
61
|
+
|
|
62
|
+
# 发起 HTTP 请求
|
|
63
|
+
async with session.put(
|
|
64
|
+
url, json=json_data, headers=headers
|
|
65
|
+
) as response:
|
|
66
|
+
if response.status >= 400:
|
|
67
|
+
error_data = await response.json()
|
|
68
|
+
if response.status == 400:
|
|
69
|
+
error_model = BadRequestError(**error_data)
|
|
70
|
+
raise ShoplineAPIError(
|
|
71
|
+
status_code=400,
|
|
72
|
+
error=error_model,
|
|
73
|
+
**error_data
|
|
74
|
+
)
|
|
75
|
+
if response.status == 403:
|
|
76
|
+
error_model = BadRequestError(**error_data)
|
|
77
|
+
raise ShoplineAPIError(
|
|
78
|
+
status_code=403,
|
|
79
|
+
error=error_model,
|
|
80
|
+
**error_data
|
|
81
|
+
)
|
|
82
|
+
if response.status == 404:
|
|
83
|
+
error_model = NotFoundError(**error_data)
|
|
84
|
+
raise ShoplineAPIError(
|
|
85
|
+
status_code=404,
|
|
86
|
+
error=error_model,
|
|
87
|
+
**error_data
|
|
88
|
+
)
|
|
89
|
+
if response.status == 422:
|
|
90
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
91
|
+
raise ShoplineAPIError(
|
|
92
|
+
status_code=422,
|
|
93
|
+
error=error_model,
|
|
94
|
+
**error_data
|
|
95
|
+
)
|
|
96
|
+
if response.status == 500:
|
|
97
|
+
error_model = ServerError(**error_data)
|
|
98
|
+
raise ShoplineAPIError(
|
|
99
|
+
status_code=500,
|
|
100
|
+
error=error_model,
|
|
101
|
+
**error_data
|
|
102
|
+
)
|
|
103
|
+
# 默认错误处理
|
|
104
|
+
raise ShoplineAPIError(
|
|
105
|
+
status_code=response.status,
|
|
106
|
+
**error_data
|
|
107
|
+
)
|
|
108
|
+
response_data = await response.json()
|
|
109
|
+
|
|
110
|
+
# 验证并返回响应数据
|
|
111
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,114 @@
|
|
|
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.gift import Gift
|
|
12
|
+
from ...models.not_found_error import NotFoundError
|
|
13
|
+
from ...models.product import Product
|
|
14
|
+
from ...models.server_error import ServerError
|
|
15
|
+
from ...models.unprocessable_entity_error import UnprocessableEntityError
|
|
16
|
+
|
|
17
|
+
class Request(BaseModel):
|
|
18
|
+
"""请求体模型"""
|
|
19
|
+
sku: Optional[str] = None
|
|
20
|
+
"""Product or Product Variation sku
|
|
21
|
+
商品或商品規格的商品貨號"""
|
|
22
|
+
quantity: Optional[int] = None
|
|
23
|
+
"""This value should be between -9999999 and 9999999.
|
|
24
|
+
數值必須在 -9999999 和 9999999 之間。"""
|
|
25
|
+
replace: Optional[bool] = None
|
|
26
|
+
"""Whether replacing the original quantity
|
|
27
|
+
是否取代原本數量
|
|
28
|
+
-
|
|
29
|
+
true: replace the product's quantity with the number you provided
|
|
30
|
+
取代原本數量
|
|
31
|
+
|
|
32
|
+
false: increase/decrease the quantity with the number you provided
|
|
33
|
+
增加/減少數量" """
|
|
34
|
+
|
|
35
|
+
class Response(BaseModel):
|
|
36
|
+
"""响应体模型"""
|
|
37
|
+
id: Optional[str] = None
|
|
38
|
+
sku: Optional[str] = None
|
|
39
|
+
quantity: Optional[float] = None
|
|
40
|
+
updated_at: Optional[str] = None
|
|
41
|
+
product_id: Optional[str] = None
|
|
42
|
+
items: Optional[List[Dict[str, Any]]] = None
|
|
43
|
+
errors: Optional[List[Dict[str, Any]]] = None
|
|
44
|
+
|
|
45
|
+
async def call(
|
|
46
|
+
session: aiohttp.ClientSession, request: Optional[Request] = None
|
|
47
|
+
) -> Response:
|
|
48
|
+
"""
|
|
49
|
+
Update Quantity by SKU
|
|
50
|
+
|
|
51
|
+
Update all products or product variations quantity by input SKU
|
|
52
|
+
更新所有相同商品貨號的商品或商品規格庫存數量
|
|
53
|
+
|
|
54
|
+
Path: PUT /products/update_quantity
|
|
55
|
+
"""
|
|
56
|
+
# 构建请求 URL
|
|
57
|
+
url = "products/update_quantity"
|
|
58
|
+
|
|
59
|
+
# 构建请求头
|
|
60
|
+
headers = {"Content-Type": "application/json"}
|
|
61
|
+
|
|
62
|
+
# 构建请求体
|
|
63
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
64
|
+
|
|
65
|
+
# 发起 HTTP 请求
|
|
66
|
+
async with session.put(
|
|
67
|
+
url, json=json_data, headers=headers
|
|
68
|
+
) as response:
|
|
69
|
+
if response.status >= 400:
|
|
70
|
+
error_data = await response.json()
|
|
71
|
+
if response.status == 400:
|
|
72
|
+
error_model = BadRequestError(**error_data)
|
|
73
|
+
raise ShoplineAPIError(
|
|
74
|
+
status_code=400,
|
|
75
|
+
error=error_model,
|
|
76
|
+
**error_data
|
|
77
|
+
)
|
|
78
|
+
if response.status == 403:
|
|
79
|
+
error_model = BadRequestError(**error_data)
|
|
80
|
+
raise ShoplineAPIError(
|
|
81
|
+
status_code=403,
|
|
82
|
+
error=error_model,
|
|
83
|
+
**error_data
|
|
84
|
+
)
|
|
85
|
+
if response.status == 404:
|
|
86
|
+
error_model = NotFoundError(**error_data)
|
|
87
|
+
raise ShoplineAPIError(
|
|
88
|
+
status_code=404,
|
|
89
|
+
error=error_model,
|
|
90
|
+
**error_data
|
|
91
|
+
)
|
|
92
|
+
if response.status == 422:
|
|
93
|
+
error_model = UnprocessableEntityError(**error_data)
|
|
94
|
+
raise ShoplineAPIError(
|
|
95
|
+
status_code=422,
|
|
96
|
+
error=error_model,
|
|
97
|
+
**error_data
|
|
98
|
+
)
|
|
99
|
+
if response.status == 500:
|
|
100
|
+
error_model = ServerError(**error_data)
|
|
101
|
+
raise ShoplineAPIError(
|
|
102
|
+
status_code=500,
|
|
103
|
+
error=error_model,
|
|
104
|
+
**error_data
|
|
105
|
+
)
|
|
106
|
+
# 默认错误处理
|
|
107
|
+
raise ShoplineAPIError(
|
|
108
|
+
status_code=response.status,
|
|
109
|
+
**error_data
|
|
110
|
+
)
|
|
111
|
+
response_data = await response.json()
|
|
112
|
+
|
|
113
|
+
# 验证并返回响应数据
|
|
114
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,89 @@
|
|
|
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.not_found_error import NotFoundError
|
|
11
|
+
from ...models.product_stock import ProductStock
|
|
12
|
+
from ...models.server_error import ServerError
|
|
13
|
+
|
|
14
|
+
class Request(BaseModel):
|
|
15
|
+
"""请求体模型"""
|
|
16
|
+
warehouse_id: str
|
|
17
|
+
"""Warehouse’s id
|
|
18
|
+
倉庫 id
|
|
19
|
+
-----
|
|
20
|
+
Only warehouse with status "active" can be updated
|
|
21
|
+
只有 status “active” 的 warehouse stock 的可以更新"""
|
|
22
|
+
quantity: float
|
|
23
|
+
"""Quantity
|
|
24
|
+
(新增/減少)商品數量
|
|
25
|
+
|
|
26
|
+
Negative number is allowed
|
|
27
|
+
允許更新庫存為負值"""
|
|
28
|
+
variation_id: Optional[str] = None
|
|
29
|
+
"""Product Variation's id
|
|
30
|
+
若更新選項的庫存,請指定選項id"""
|
|
31
|
+
is_replace: Optional[bool] = None
|
|
32
|
+
"""Whether replacing the original quantity
|
|
33
|
+
是否取代原本數量
|
|
34
|
+
|
|
35
|
+
true: replace the product's quantity with the number you provided
|
|
36
|
+
取代原本數量
|
|
37
|
+
|
|
38
|
+
false: increase/decrease the quantity with the number you provided
|
|
39
|
+
增加/減少數量"""
|
|
40
|
+
|
|
41
|
+
async def call(
|
|
42
|
+
session: aiohttp.ClientSession, id: str, request: Optional[Request] = None
|
|
43
|
+
) -> ProductStock:
|
|
44
|
+
"""
|
|
45
|
+
Update Stock
|
|
46
|
+
|
|
47
|
+
To update the product's stock with its ID
|
|
48
|
+
使用商品 ID 更新商品在各個倉庫的庫存
|
|
49
|
+
|
|
50
|
+
Path: PUT /products/{id}/stocks
|
|
51
|
+
"""
|
|
52
|
+
# 构建请求 URL
|
|
53
|
+
url = f"products/{id}/stocks"
|
|
54
|
+
|
|
55
|
+
# 构建请求头
|
|
56
|
+
headers = {"Content-Type": "application/json"}
|
|
57
|
+
|
|
58
|
+
# 构建请求体
|
|
59
|
+
json_data = request.model_dump(exclude_none=True) if request else None
|
|
60
|
+
|
|
61
|
+
# 发起 HTTP 请求
|
|
62
|
+
async with session.put(
|
|
63
|
+
url, json=json_data, headers=headers
|
|
64
|
+
) as response:
|
|
65
|
+
if response.status >= 400:
|
|
66
|
+
error_data = await response.json()
|
|
67
|
+
if response.status == 404:
|
|
68
|
+
error_model = NotFoundError(**error_data)
|
|
69
|
+
raise ShoplineAPIError(
|
|
70
|
+
status_code=404,
|
|
71
|
+
error=error_model,
|
|
72
|
+
**error_data
|
|
73
|
+
)
|
|
74
|
+
if response.status == 500:
|
|
75
|
+
error_model = ServerError(**error_data)
|
|
76
|
+
raise ShoplineAPIError(
|
|
77
|
+
status_code=500,
|
|
78
|
+
error=error_model,
|
|
79
|
+
**error_data
|
|
80
|
+
)
|
|
81
|
+
# 默认错误处理
|
|
82
|
+
raise ShoplineAPIError(
|
|
83
|
+
status_code=response.status,
|
|
84
|
+
**error_data
|
|
85
|
+
)
|
|
86
|
+
response_data = await response.json()
|
|
87
|
+
|
|
88
|
+
# 验证并返回响应数据
|
|
89
|
+
return ProductStock(**response_data)
|
|
File without changes
|
|
@@ -0,0 +1,45 @@
|
|
|
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.promotion import Promotion
|
|
11
|
+
|
|
12
|
+
async def call(
|
|
13
|
+
session: aiohttp.ClientSession, data: Optional[Dict[str, Any]] = None
|
|
14
|
+
) -> Promotion:
|
|
15
|
+
"""
|
|
16
|
+
Create Promotion
|
|
17
|
+
|
|
18
|
+
To create detailed information of couple promotions
|
|
19
|
+
建立優惠活動
|
|
20
|
+
|
|
21
|
+
Path: POST /promotions
|
|
22
|
+
"""
|
|
23
|
+
# 构建请求 URL
|
|
24
|
+
url = "promotions"
|
|
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.post(
|
|
34
|
+
url, json=json_data, headers=headers
|
|
35
|
+
) as response:
|
|
36
|
+
if response.status >= 400:
|
|
37
|
+
error_data = await response.json()
|
|
38
|
+
raise ShoplineAPIError(
|
|
39
|
+
status_code=response.status,
|
|
40
|
+
**error_data
|
|
41
|
+
)
|
|
42
|
+
response_data = await response.json()
|
|
43
|
+
|
|
44
|
+
# 验证并返回响应数据
|
|
45
|
+
return Promotion(**response_data)
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
class Response(BaseModel):
|
|
10
|
+
"""响应体模型"""
|
|
11
|
+
message: Optional[str] = None
|
|
12
|
+
|
|
13
|
+
async def call(
|
|
14
|
+
session: aiohttp.ClientSession, id: str
|
|
15
|
+
) -> Response:
|
|
16
|
+
"""
|
|
17
|
+
Delete Promotion
|
|
18
|
+
|
|
19
|
+
To delete promotion with open API
|
|
20
|
+
透過open API刪除優惠活動
|
|
21
|
+
|
|
22
|
+
Path: DELETE /promotions/{id}
|
|
23
|
+
"""
|
|
24
|
+
# 构建请求 URL
|
|
25
|
+
url = f"promotions/{id}"
|
|
26
|
+
|
|
27
|
+
# 构建请求头
|
|
28
|
+
headers = {"Content-Type": "application/json"}
|
|
29
|
+
|
|
30
|
+
# 发起 HTTP 请求
|
|
31
|
+
async with session.delete(
|
|
32
|
+
url, headers=headers
|
|
33
|
+
) as response:
|
|
34
|
+
if response.status >= 400:
|
|
35
|
+
error_data = await response.json()
|
|
36
|
+
# 默认错误处理
|
|
37
|
+
raise ShoplineAPIError(
|
|
38
|
+
status_code=response.status,
|
|
39
|
+
**error_data
|
|
40
|
+
)
|
|
41
|
+
response_data = await response.json()
|
|
42
|
+
|
|
43
|
+
# 验证并返回响应数据
|
|
44
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,61 @@
|
|
|
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.customer_coupon_promotions import CustomerCouponPromotions
|
|
11
|
+
|
|
12
|
+
class Request(BaseModel):
|
|
13
|
+
"""查询参数模型"""
|
|
14
|
+
promotion_ids: List[str]
|
|
15
|
+
"""優惠活動 ID"""
|
|
16
|
+
|
|
17
|
+
async def call(
|
|
18
|
+
session: aiohttp.ClientSession, customer_id: str, request: Optional[Request] = None
|
|
19
|
+
) -> CustomerCouponPromotions:
|
|
20
|
+
"""
|
|
21
|
+
Get Customer Coupon Promotions
|
|
22
|
+
|
|
23
|
+
To get customer coupon promotions with promotion_ids.
|
|
24
|
+
The API returns promotions only if the given promotions whose type are draw.
|
|
25
|
+
And it returns the promotions which are available to draw or have already been drawn.
|
|
26
|
+
It returns null if the given promotions are not available.
|
|
27
|
+
|
|
28
|
+
使用 promotion_ids 獲取用戶優惠活動。
|
|
29
|
+
此 API 只會回傳傳入的 promotion_ids 中,類型為領取型的優惠活動,並僅回傳已領取或可領取的優惠動。
|
|
30
|
+
若傳入的 promotion_ids 中有不可領取的優惠活動,則該優惠活動會回傳 null。
|
|
31
|
+
|
|
32
|
+
Path: GET /customers/{customer_id}/coupon_promotions
|
|
33
|
+
"""
|
|
34
|
+
# 构建请求 URL
|
|
35
|
+
url = f"customers/{customer_id}/coupon_promotions"
|
|
36
|
+
|
|
37
|
+
# 构建查询参数
|
|
38
|
+
params = {}
|
|
39
|
+
if request:
|
|
40
|
+
request_dict = request.model_dump(exclude_none=True)
|
|
41
|
+
for key, value in request_dict.items():
|
|
42
|
+
if value is not None:
|
|
43
|
+
params[key] = value
|
|
44
|
+
|
|
45
|
+
# 构建请求头
|
|
46
|
+
headers = {"Content-Type": "application/json"}
|
|
47
|
+
|
|
48
|
+
# 发起 HTTP 请求
|
|
49
|
+
async with session.get(
|
|
50
|
+
url, params=params, headers=headers
|
|
51
|
+
) as response:
|
|
52
|
+
if response.status >= 400:
|
|
53
|
+
error_data = await response.json()
|
|
54
|
+
raise ShoplineAPIError(
|
|
55
|
+
status_code=response.status,
|
|
56
|
+
**error_data
|
|
57
|
+
)
|
|
58
|
+
response_data = await response.json()
|
|
59
|
+
|
|
60
|
+
# 验证并返回响应数据
|
|
61
|
+
return CustomerCouponPromotions(**response_data)
|
|
@@ -0,0 +1,63 @@
|
|
|
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.customer_promotion import CustomerPromotion
|
|
11
|
+
|
|
12
|
+
class Request(BaseModel):
|
|
13
|
+
"""查询参数模型"""
|
|
14
|
+
coupon_status: Optional[Literal['valid', 'invalid', 'comingSoon']] = None
|
|
15
|
+
"""優惠券狀態"""
|
|
16
|
+
available_platforms: Optional[List[Literal['ec', 'retail']]] = None
|
|
17
|
+
"""優惠券適用渠道"""
|
|
18
|
+
coupon_type: Optional[List[Literal['draw', 'single', 'multi']]] = None
|
|
19
|
+
"""優惠券形式"""
|
|
20
|
+
|
|
21
|
+
class Response(BaseModel):
|
|
22
|
+
"""响应体模型"""
|
|
23
|
+
items: Optional[List[CustomerPromotion]] = None
|
|
24
|
+
|
|
25
|
+
async def call(
|
|
26
|
+
session: aiohttp.ClientSession, customer_id: str, request: Optional[Request] = None
|
|
27
|
+
) -> Response:
|
|
28
|
+
"""
|
|
29
|
+
Get Customer Promotions
|
|
30
|
+
|
|
31
|
+
To get customer promotions
|
|
32
|
+
取得用戶優惠活動
|
|
33
|
+
|
|
34
|
+
Path: GET /customers/{customer_id}/promotions
|
|
35
|
+
"""
|
|
36
|
+
# 构建请求 URL
|
|
37
|
+
url = f"customers/{customer_id}/promotions"
|
|
38
|
+
|
|
39
|
+
# 构建查询参数
|
|
40
|
+
params = {}
|
|
41
|
+
if request:
|
|
42
|
+
request_dict = request.model_dump(exclude_none=True)
|
|
43
|
+
for key, value in request_dict.items():
|
|
44
|
+
if value is not None:
|
|
45
|
+
params[key] = value
|
|
46
|
+
|
|
47
|
+
# 构建请求头
|
|
48
|
+
headers = {"Content-Type": "application/json"}
|
|
49
|
+
|
|
50
|
+
# 发起 HTTP 请求
|
|
51
|
+
async with session.get(
|
|
52
|
+
url, params=params, headers=headers
|
|
53
|
+
) as response:
|
|
54
|
+
if response.status >= 400:
|
|
55
|
+
error_data = await response.json()
|
|
56
|
+
raise ShoplineAPIError(
|
|
57
|
+
status_code=response.status,
|
|
58
|
+
**error_data
|
|
59
|
+
)
|
|
60
|
+
response_data = await response.json()
|
|
61
|
+
|
|
62
|
+
# 验证并返回响应数据
|
|
63
|
+
return Response(**response_data)
|
|
@@ -0,0 +1,60 @@
|
|
|
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.promotion import Promotion
|
|
11
|
+
|
|
12
|
+
class Request(BaseModel):
|
|
13
|
+
"""查询参数模型"""
|
|
14
|
+
show_whitelisted_membership_tier: Optional[bool] = None
|
|
15
|
+
"""Response whitelisted MembershipTier Data
|
|
16
|
+
回傳指定會員資料"""
|
|
17
|
+
show_summary: Optional[bool] = None
|
|
18
|
+
"""Respone Promotion Summary
|
|
19
|
+
回傳優惠活動概覽"""
|
|
20
|
+
|
|
21
|
+
async def call(
|
|
22
|
+
session: aiohttp.ClientSession, id: str, request: Optional[Request] = None
|
|
23
|
+
) -> Promotion:
|
|
24
|
+
"""
|
|
25
|
+
Get Promotion
|
|
26
|
+
|
|
27
|
+
To get detailed information for a specific promotion with its ID
|
|
28
|
+
使用優惠活動ID獲取特定一個優惠活動的詳細資料
|
|
29
|
+
|
|
30
|
+
Path: GET /promotions/{id}
|
|
31
|
+
"""
|
|
32
|
+
# 构建请求 URL
|
|
33
|
+
url = f"promotions/{id}"
|
|
34
|
+
|
|
35
|
+
# 构建查询参数
|
|
36
|
+
params = {}
|
|
37
|
+
if request:
|
|
38
|
+
request_dict = request.model_dump(exclude_none=True)
|
|
39
|
+
for key, value in request_dict.items():
|
|
40
|
+
if value is not None:
|
|
41
|
+
params[key] = value
|
|
42
|
+
|
|
43
|
+
# 构建请求头
|
|
44
|
+
headers = {"Content-Type": "application/json"}
|
|
45
|
+
|
|
46
|
+
# 发起 HTTP 请求
|
|
47
|
+
async with session.get(
|
|
48
|
+
url, params=params, headers=headers
|
|
49
|
+
) as response:
|
|
50
|
+
if response.status >= 400:
|
|
51
|
+
error_data = await response.json()
|
|
52
|
+
# 默认错误处理
|
|
53
|
+
raise ShoplineAPIError(
|
|
54
|
+
status_code=response.status,
|
|
55
|
+
**error_data
|
|
56
|
+
)
|
|
57
|
+
response_data = await response.json()
|
|
58
|
+
|
|
59
|
+
# 验证并返回响应数据
|
|
60
|
+
return Promotion(**response_data)
|