@wix/agent-skills 1.15.0 → 1.16.0
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.
- package/README.md +5 -1
- package/package.json +1 -1
- package/skills/wix-app/SKILL.md +4 -1
- package/skills/wix-app/references/APP_TOOLS.md +134 -0
- package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +1 -1
- package/skills/wix-app/references/DASHBOARD_PAGE.md +0 -10
- package/skills/wix-app/references/DATA_COLLECTION.md +6 -4
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +28 -7
- package/skills/wix-app/references/SERVICE_PLUGIN.md +12 -10
- package/skills/wix-app/references/STORES_VERSIONING.md +9 -211
- package/skills/wix-app/references/app-tools/TOOLS.md +75 -0
- package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +5 -0
- package/skills/wix-app/references/dashboard-page/DASHBOARD_API.md +2 -2
- package/skills/wix-app/references/editor-react-component/A11Y-REVIEW-REFERENCE.md +172 -0
- package/skills/wix-app/references/editor-react-component/A11Y-REVIEW.md +138 -0
- package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +172 -0
- package/skills/wix-app/references/editor-react-component/BRANDED-COMPONENTS.md +29 -0
- package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +1 -1
- package/skills/wix-app/references/editor-react-component/COMPONENT-PREVIEW.md +57 -0
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +33 -2
- package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +5 -3
- package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +18 -1
- package/skills/wix-app/references/editor-react-component/PARTS.md +15 -2
- package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +4 -3
- package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +13 -9
- package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +4 -0
- package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +4 -0
- package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +3 -1
- package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +4 -0
- package/skills/wix-app/references/service-plugin/TOOLS_PROVIDER.md +54 -0
- package/skills/wix-app/references/stores/CATEGORIES.md +22 -0
- package/skills/wix-app/references/stores/GET_PRODUCT.md +99 -0
- package/skills/wix-app/references/stores/INVENTORY.md +37 -0
- package/skills/wix-app/references/stores/QUERY.md +119 -0
- package/skills/wix-app/references/stores/WRITE.md +55 -0
- package/skills/wix-docs/SKILL.md +35 -3
- package/skills/wix-headless/SKILL.md +9 -2
- package/skills/wix-headless/entry/bootstrap.mjs +2 -2
- package/skills/wix-headless/entry/skill.md +0 -2
- package/skills/wix-headless/references/CAPABILITIES.md +6 -4
- package/skills/wix-headless/references/CONTENT.md +36 -0
- package/skills/wix-headless/references/DESIGN.md +54 -0
- package/skills/wix-headless/references/DISCOVERY.md +25 -1
- package/skills/wix-headless/references/FEEDBACK.md +16 -5
- package/skills/wix-headless/references/IMAGE_GENERATION.md +10 -0
- package/skills/wix-headless/references/SDK_HANDOFF.md +2 -0
- package/skills/wix-headless/references/SEED.md +3 -1
- package/skills/wix-headless/references/SETUP.md +1 -1
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +3 -2
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +42 -2
- package/skills/wix-headless/references/inline-recipes/setup-bookings.md +5 -1
- package/skills/wix-headless/references/inline-recipes/setup-forms.md +1 -1
- package/skills/wix-headless/references/inline-recipes/setup-online-store.md +33 -8
- package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +3 -1
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +73 -0
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +38 -2
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +20 -1
- package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +1 -1
- package/skills/wix-headless/references/managed/CONNECT.md +2 -2
- package/skills/wix-headless/references/managed/CREATE.md +15 -1
- package/skills/wix-headless/references/managed/DEPLOYMENT.md +47 -0
- package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +8 -0
- package/skills/wix-headless/references/stripe/DEPLOYMENT.md +8 -0
- package/skills/wix-manage/SKILL.md +131 -12
- package/skills/wix-manage/references/analytics/analytics-dashboard-navigation.md +41 -0
- package/skills/wix-manage/references/analytics/query-site-analytics.md +66 -9
- package/skills/wix-manage/references/app-installation/app-installation-dashboard-navigation.md +28 -0
- package/skills/wix-manage/references/app-installation/install-wix-apps.md +3 -0
- package/skills/wix-manage/references/blog/blog-dashboard-navigation.md +56 -0
- package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +31 -6
- package/skills/wix-manage/references/bookings/booking-service-policy-setup.md +3 -1
- package/skills/wix-manage/references/bookings/bookings-dashboard-navigation.md +63 -0
- package/skills/wix-manage/references/bookings/create-booking-service-from-prompt.md +6 -5
- package/skills/wix-manage/references/bookings/create-course-service.md +30 -5
- package/skills/wix-manage/references/bookings/diagnose-availability-issues.md +85 -42
- package/skills/wix-manage/references/cms/cms-dashboard-navigation.md +44 -0
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +31 -3
- package/skills/wix-manage/references/cms/cms-publishing-flow.md +287 -0
- package/skills/wix-manage/references/cms/cms-schema-management.md +33 -1
- package/skills/wix-manage/references/contacts/contacts-dashboard-navigation.md +46 -0
- package/skills/wix-manage/references/contacts/create-a-contact.md +82 -0
- package/skills/wix-manage/references/contacts/update-a-contact.md +119 -0
- package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +82 -0
- package/skills/wix-manage/references/dashboard-navigation/routes.json +1733 -0
- package/skills/wix-manage/references/domains/domains-dashboard-navigation.md +32 -0
- package/skills/wix-manage/references/ecommerce/ecom-pricing.md +4 -4
- package/skills/wix-manage/references/ecommerce/ecom-shipping.md +1 -1
- package/skills/wix-manage/references/ecommerce/gift-cards/ecom-gift-cards-goal-sell-gift-cards.md +338 -0
- package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-create-discount-rule.md +42 -78
- package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-bundle-and-save.md +1 -1
- package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-stock-mover.md +1 -1
- package/skills/wix-manage/references/ecommerce/pricing-promotions/ecom-pricing-flow-upsell-boost.md +1 -1
- package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +90 -92
- package/skills/wix-manage/references/events/create-wix-event.md +176 -0
- package/skills/wix-manage/references/events/manage-wix-events.md +174 -0
- package/skills/wix-manage/references/forms/forms-dashboard-navigation.md +44 -0
- package/skills/wix-manage/references/get-paid/get-paid-dashboard-navigation.md +52 -0
- package/skills/wix-manage/references/get-paid/how-to-setup-wix-payments.md +30 -7
- package/skills/wix-manage/references/google-ads/billing-and-payment.md +80 -0
- package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +212 -0
- package/skills/wix-manage/references/google-ads/get-campaign-suggestions.md +110 -0
- package/skills/wix-manage/references/google-ads/google-ads-dashboard-navigation.md +25 -0
- package/skills/wix-manage/references/google-ads/install-and-create-account.md +155 -0
- package/skills/wix-manage/references/google-ads/manage-campaign-lifecycle.md +63 -0
- package/skills/wix-manage/references/google-ads/query-campaign-analytics.md +155 -0
- package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +225 -144
- package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +19 -10
- package/skills/wix-manage/references/marketing/marketing-dashboard-navigation.md +52 -0
- package/skills/wix-manage/references/pricing-plans/create-and-update-pricing-plans.md +99 -1
- package/skills/wix-manage/references/pricing-plans/pricing-plans-dashboard-navigation.md +45 -0
- package/skills/wix-manage/references/restaurants/restaurants-dashboard-navigation.md +68 -0
- package/skills/wix-manage/references/restaurants/wix-restaurants-setup.md +94 -125
- package/skills/wix-manage/references/site-properties/change-payment-currency-site-properties.md +48 -9
- package/skills/wix-manage/references/site-properties/site-properties-dashboard-navigation.md +31 -0
- package/skills/wix-manage/references/sites/create-headless-site.md +52 -0
- package/skills/wix-manage/references/sites/create-site-from-template.md +2 -25
- package/skills/wix-manage/references/sites/site-import.md +243 -0
- package/skills/wix-manage/references/sites/sites-dashboard-navigation.md +29 -0
- package/skills/wix-manage/references/stores/add-store-pages-to-site.md +17 -1
- package/skills/wix-manage/references/stores/create-product-from-image.md +8 -6
- package/skills/wix-manage/references/stores/create-product-with-options-catalog-v3.md +16 -10
- package/skills/wix-manage/references/stores/find-products-query-and-search-catalog-v3.md +26 -8
- package/skills/wix-manage/references/stores/stores-dashboard-navigation.md +65 -0
- package/skills/wix-manage/references/stores/update-product-with-options.md +39 -7
- package/skills/wix-replatform/.publish-manifest.json +8 -0
- package/skills/wix-replatform/SKILL.md +693 -0
- package/skills/wix-replatform/lib/artifact-freshness.js +215 -0
- package/skills/wix-replatform/lib/completion-report.js +200 -0
- package/skills/wix-replatform/lib/config-env.js +59 -0
- package/skills/wix-replatform/lib/execution-manifest.js +185 -0
- package/skills/wix-replatform/lib/execution-state.js +173 -0
- package/skills/wix-replatform/lib/import-recovery.js +313 -0
- package/skills/wix-replatform/lib/local-state.js +642 -0
- package/skills/wix-replatform/lib/orchestration-preflight.js +143 -0
- package/skills/wix-replatform/lib/orchestration-router.js +122 -0
- package/skills/wix-replatform/lib/orchestration-state.js +455 -0
- package/skills/wix-replatform/lib/progress-log.js +224 -0
- package/skills/wix-replatform/lib/progress-log.sh +140 -0
- package/skills/wix-replatform/lib/url-preservation-state.js +391 -0
- package/skills/wix-replatform/resources/rp-discovery/SKILL.md +184 -0
- package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +529 -0
- package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +316 -0
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +64 -0
- package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +1114 -0
- package/skills/wix-replatform/resources/rp-mapper/SKILL.md +430 -0
- package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +217 -0
- package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +148 -0
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +378 -0
- package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +183 -0
- package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +478 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +136 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +310 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +1081 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +618 -0
- package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +949 -0
- package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +196 -0
- package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +66 -0
- package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +60 -0
- package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +95 -0
- package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +82 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +256 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +249 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +444 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +774 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +71 -0
- package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +632 -0
- package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +330 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +21 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +39 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +35 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +14 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +35 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +36 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +35 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +14 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +131 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +21 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +97 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +528 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +38 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +53 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +84 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +25 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +38 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +37 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +90 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +64 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +141 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +384 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +260 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +238 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +237 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +238 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +2219 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +31 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +100 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +107 -0
- package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +344 -0
- package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +250 -0
- package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1927 -0
- package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +83 -0
- package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +141 -0
- package/skills/wix-replatform/scripts/artifact-freshness.js +76 -0
- package/skills/wix-replatform/scripts/execution-manifest-validate.js +43 -0
- package/skills/wix-replatform/scripts/execution-state-prepare.js +128 -0
- package/skills/wix-replatform/scripts/orchestration-preflight.js +48 -0
- package/skills/wix-replatform/scripts/orchestration-route.js +46 -0
- package/skills/wix-replatform/scripts/orchestration-state.js +245 -0
- package/skills/wix-vibe-headless/SKILL.md +54 -25
- package/skills/wix-vibe-headless/install/deploy.cjs +95 -0
- package/skills/wix-vibe-headless/install/pin-agents-md.cjs +34 -0
- package/skills/wix-vibe-headless/platforms/README.md +26 -0
- package/skills/wix-vibe-headless/platforms/base44.md +177 -0
- package/skills/wix-vibe-headless/platforms/generic.md +122 -0
- package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +230 -119
- package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +43 -0
- package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +25 -0
- package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +15 -0
- package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +35 -0
- package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +38 -0
- package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +40 -0
- package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +54 -0
- package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +65 -0
- package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +50 -0
- package/skills/wix-vibe-headless/references/blog/seed/SEED.md +103 -0
- package/skills/wix-vibe-headless/references/blog/seed/seed-blog.js +270 -0
- package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +260 -145
- package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +65 -0
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +47 -0
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +13 -0
- package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +126 -0
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +108 -0
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +58 -0
- package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +95 -0
- package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +94 -0
- package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +89 -0
- package/skills/wix-vibe-headless/references/bookings/{wix-bookings-checkout.js → app/rest/wix-bookings-checkout.js} +1 -1
- package/skills/wix-vibe-headless/references/bookings/{wix-bookings-services.js → app/rest/wix-bookings-services.js} +90 -12
- package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +117 -0
- package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.js +333 -0
- package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +169 -147
- package/skills/wix-vibe-headless/references/cms/app/collection.config.js +31 -0
- package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +18 -0
- package/skills/wix-vibe-headless/references/cms/{wix-cms.js → app/rest/wix-cms.js} +47 -2
- package/skills/wix-vibe-headless/references/cms/seed/SEED.md +145 -0
- package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +228 -131
- package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +23 -0
- package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +43 -0
- package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +13 -0
- package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +29 -0
- package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +57 -0
- package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +78 -0
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +27 -0
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +54 -0
- package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +40 -0
- package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +81 -0
- package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +48 -0
- package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +36 -0
- package/skills/wix-vibe-headless/references/events/{wix-events-browse.js → app/rest/wix-events-browse.js} +3 -2
- package/skills/wix-vibe-headless/references/events/seed/SEED.md +107 -0
- package/skills/wix-vibe-headless/references/events/seed/seed-events.js +251 -0
- package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +276 -188
- package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +101 -0
- package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +33 -0
- package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +21 -0
- package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +29 -0
- package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +54 -0
- package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +77 -0
- package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +36 -0
- package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +32 -0
- package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +35 -0
- package/skills/wix-vibe-headless/references/members/{wix-members-auth.js → app/rest/wix-members-auth.js} +6 -3
- package/skills/wix-vibe-headless/references/members/install/Register.jsx +22 -0
- package/skills/wix-vibe-headless/references/members/seed/SEED.md +22 -0
- package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +233 -104
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +31 -0
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +15 -0
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +39 -0
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +15 -0
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +29 -0
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +35 -0
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +27 -0
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +25 -0
- package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +39 -0
- package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +27 -0
- package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +60 -0
- package/skills/wix-vibe-headless/references/portfolio/{wix-portfolio.js → app/rest/wix-portfolio.js} +84 -55
- package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +94 -0
- package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.js +236 -0
- package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +240 -117
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +35 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +48 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +16 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +35 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +25 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +28 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +30 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +30 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +53 -0
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +28 -0
- package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +86 -0
- package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.js +251 -0
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +248 -124
- package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +81 -0
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +71 -0
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +43 -0
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +21 -0
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +60 -0
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +63 -0
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +32 -0
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +73 -0
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +28 -0
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +102 -0
- package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +180 -0
- package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.js +452 -0
- package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +56 -0
- package/skills/wix-vibe-headless/references/shared/{wix-client.js → app/rest/wix-client.js} +6 -8
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +6 -0
- package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +263 -148
- package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +20 -0
- package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +150 -0
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductCard.jsx +167 -0
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductGallery.jsx +51 -0
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductGrid.jsx +54 -0
- package/skills/wix-vibe-headless/references/storefront/app/components/VariantPicker.jsx +119 -0
- package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +71 -0
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +109 -0
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +98 -0
- package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +27 -0
- package/skills/wix-vibe-headless/references/storefront/app/pages/ProductDetail.jsx +139 -0
- package/skills/wix-vibe-headless/references/storefront/app/pages/Shop.jsx +75 -0
- package/skills/wix-vibe-headless/references/storefront/{wix-store-cart.js → app/rest/wix-store-cart.js} +1 -1
- package/skills/wix-vibe-headless/references/storefront/{wix-store-catalog.js → app/rest/wix-store-catalog.js} +25 -2
- package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +111 -0
- package/skills/wix-vibe-headless/references/storefront/seed/seed-store.js +299 -0
- /package/skills/wix-vibe-headless/references/blog/{wix-blog.js → app/rest/wix-blog.js} +0 -0
- /package/skills/wix-vibe-headless/references/events/{wix-events-registration.js → app/rest/wix-events-registration.js} +0 -0
- /package/skills/wix-vibe-headless/references/pricing-plans/{wix-pricing-plans.js → app/rest/wix-pricing-plans.js} +0 -0
- /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-menu.js → app/rest/wix-restaurants-menu.js} +0 -0
- /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-ordering.js → app/rest/wix-restaurants-ordering.js} +0 -0
- /package/skills/wix-vibe-headless/references/restaurants/{wix-restaurants-reservations.js → app/rest/wix-restaurants-reservations.js} +0 -0
|
@@ -4,6 +4,22 @@ description: "End-to-end flow to generate an AI-powered social media marketing p
|
|
|
4
4
|
---
|
|
5
5
|
# RECIPE: Generate a Marketing Plan and Schedule Its Posts
|
|
6
6
|
|
|
7
|
+
## THE PROTOCOL (read this first — every rule is mandatory)
|
|
8
|
+
|
|
9
|
+
Walk every marketing-plan request through this conversation, in this order. Skip a step only when the user's own words in this conversation already answered it.
|
|
10
|
+
|
|
11
|
+
1. **Open with the current state.** Fetch the plan (STEP 3 endpoint) and the marketing settings (`GET .../marketing-settings`). Tell the user what the plan is shaped by and what they can change: goal, marketing tools, content pillars (topics), tone of voice, point of view, business profile, and per-tool cadence. Say which inputs are site-derived and **read-only**: language, business/target locations, industry — those change in the site's Language & Region / SEO business-location settings, never through marketing settings (details in STEP 1).
|
|
12
|
+
2. **Decide the settings with the user.** For each setting they want to change, use their words. If they want help choosing, fetch the selectable values (`GET .../marketing-settings/plan-goal-options`, `GET .../marketing-settings/defaults`) and propose suggestions for them to confirm. Write only values the user gave or confirmed; leave everything else to the site defaults. Never fabricate a goal, tone, or topic list on their behalf, and never put `language`, `targetLocations`, or `businessLocation` in the request or claim the call changed them.
|
|
13
|
+
3. **Save, then offer to generate.** Upsert the confirmed settings (STEP 1, `fieldMask` as a comma-separated string matching exactly what you send), then offer to generate the plan — or, if a plan already exists, to regenerate it so the new settings take effect (settings are read only at generation time; use the keyword-research variant when `topics` changed). Poll until `ACTIVE` (STEPs 2-3).
|
|
14
|
+
4. **Present the plan from the API data only.** Show the returned activities and their post drafts. Never invent activities, dates, or captions and present them as "the plan" — if it isn't in the response, it isn't in the plan (also applies to STEP 5's post generation).
|
|
15
|
+
5. **Show before scheduling.** Scheduling publishes AI-generated drafts. Before Schedule Drafts (STEP 4), show each draft's caption and media (render the image inline, or give its URL) and get explicit approval. Schedule exactly what was approved — never regenerate after approval.
|
|
16
|
+
6. **Diff the schedule response.** Only drafts for Publisher-connected channels are scheduled; the rest silently stay `DRAFT`. Compare the returned `SCHEDULED` ids against the ids you sent, and tell the user which drafts didn't schedule and which channel needs connecting (STEP 4).
|
|
17
|
+
7. **Respect cutoffs and gates.** Skip `TWITTER` drafts dated after July 31, 2026. `FAILED_PRECONDITION` on Schedule Drafts means the plan lacks the premium scheduling feature: say so once and stop; it is not a transient error to retry.
|
|
18
|
+
|
|
19
|
+
The rest of this recipe is the reference for executing each step.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
7
23
|
This recipe generates a site's AI marketing plan — a schedule of marketing activities (social campaigns, blog posts, emails) from today through the end of next month — and schedules the social posts it generates. Generation is **asynchronous and non-deterministic**: you fire it, poll until it's ready, then act on the results.
|
|
8
24
|
|
|
9
25
|
Base URL for all endpoints: `https://www.wixapis.com/promote/marketing-plan-service/v1`.
|
|
@@ -20,7 +36,7 @@ For a first-time plan, configure marketing settings **before** generating (STEP
|
|
|
20
36
|
|
|
21
37
|
**API Endpoint:** `POST https://www.wixapis.com/promote/marketing-plan-service/v1/marketing-settings`
|
|
22
38
|
|
|
23
|
-
Both `marketingSettings` and `fieldMask` are **required**. `fieldMask`
|
|
39
|
+
Both `marketingSettings` and `fieldMask` are **required**. `fieldMask` is a **single comma-separated string** of the paths to write (proto3 field-mask form) — **not a JSON array**. Sending it as an array (`["settings.marketingPlanGoal", …]`) fails with `400` `"Failed to parse request message"`. Every path in `fieldMask` must also be present in `marketingSettings`, or the call fails with `INVALID_FIELD_MASK_ERROR`.
|
|
24
40
|
|
|
25
41
|
**Language and location cannot be set here.** If the request targets a language or a place ("posts in Spanish", "customers near Berlin"), those are site-derived, read-only fields on marketing settings — never put `language`, `targetLocations`, or `businessLocation` in the request, and never tell the user this call changed them. Set the fields that do belong here (goal, tone, audience description), and direct the user to the site-level settings for the rest — see **What you can't set here** below.
|
|
26
42
|
|
|
@@ -39,15 +55,7 @@ Both `marketingSettings` and `fieldMask` are **required**. `fieldMask` lists the
|
|
|
39
55
|
"socialMarketing": { "frequency": { "interval": "WEEK", "count": 3 } }
|
|
40
56
|
}
|
|
41
57
|
},
|
|
42
|
-
"fieldMask":
|
|
43
|
-
"settings.marketingPlanGoal",
|
|
44
|
-
"settings.marketingTools",
|
|
45
|
-
"settings.topics",
|
|
46
|
-
"settings.toneOfVoice",
|
|
47
|
-
"settings.pointOfView",
|
|
48
|
-
"settings.businessProfile",
|
|
49
|
-
"overrides.socialMarketing.frequency"
|
|
50
|
-
]
|
|
58
|
+
"fieldMask": "settings.marketingPlanGoal,settings.marketingTools,settings.topics,settings.toneOfVoice,settings.pointOfView,settings.businessProfile,overrides.socialMarketing.frequency"
|
|
51
59
|
}
|
|
52
60
|
```
|
|
53
61
|
|
|
@@ -189,6 +197,7 @@ For activities that have no `items` yet, generate their posts, then schedule the
|
|
|
189
197
|
| Symptom | Cause | Fix |
|
|
190
198
|
| --- | --- | --- |
|
|
191
199
|
| Plan `status: FAILED`, or `ACTIVE` with no posts | Site not published, or `SOCIAL_MARKETING` not enabled in settings | Publish the site; ensure `settings.marketingTools` includes `SOCIAL_MARKETING`, then regenerate (STEP 2) |
|
|
200
|
+
| `400` `"Failed to parse request message"` on Upsert Marketing Settings | `fieldMask` sent as a JSON array (or `{ "paths": [...] }`) instead of a comma-separated string | Send `fieldMask` as a single comma-separated string, e.g. `"settings.marketingPlanGoal,settings.toneOfVoice"` |
|
|
192
201
|
| `INVALID_FIELD_MASK_ERROR` on Upsert Marketing Settings | A `fieldMask` path is missing from `marketingSettings` | Include every `fieldMask` path in the `marketingSettings` body |
|
|
193
202
|
| Language, region, or location "won't change" via Upsert Marketing Settings | Those fields are read-only here (site-derived) | Change them in the site's Language & Region / SEO business-location settings, then regenerate |
|
|
194
203
|
| `FAILED_PRECONDITION` on Schedule Drafts | Plan lacks the schedule-posts premium feature | Advise upgrading the social media marketing plan |
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Marketing Dashboard Navigation"
|
|
3
|
+
description: "Builds direct links to Wix marketing dashboard pages on manage.wix.com — the social posts hub (drafts, scheduled and published posts across connected channels), post design templates, saved designs, and the email marketing pages (campaigns list, campaign templates, campaign analytics). Pairs each main marketing entity (social post item, connected social account, marketing-plan post, email campaign) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Marketing Dashboard Navigation
|
|
7
|
+
|
|
8
|
+
Build direct links into the marketing pages of a site's dashboard. For the general URL contract (metaSiteId, fallbacks, redirects), see [Dashboard Navigation](../dashboard-navigation/dashboard-navigation.md).
|
|
9
|
+
|
|
10
|
+
Marketing pages are split across **two apps** with two URL namespaces:
|
|
11
|
+
|
|
12
|
+
- **Social Media Marketing** (`f27ff649-0249-4a0c-9438-841cbbfd2514`) — social posts, design templates. Routes under `social-marketing-web/`.
|
|
13
|
+
- **Email Marketing** (`135c3d92-0fea-1f9d-2ba5-2a1dfb04297e`) — email campaigns. Routes under `email-marketing/`.
|
|
14
|
+
|
|
15
|
+
Older links (`social-marketing`, `social-marketing/my-posts`, `shoutout`) redirect to the current routes.
|
|
16
|
+
|
|
17
|
+
## Social Posts Pages (Social Media Marketing)
|
|
18
|
+
|
|
19
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Social posts hub | `social-marketing-web` | Draft, scheduled, and published social posts across connected channels; create a new post |
|
|
22
|
+
| Design templates | `social-marketing-web/design-templates` | Post design template gallery |
|
|
23
|
+
| My designs | `social-marketing-web/my-designs` | Saved post designs |
|
|
24
|
+
|
|
25
|
+
Posts created or scheduled via the Publisher API (see [Create and Publish a Social Media Post](./create-and-publish-social-post.md)) and posts generated from an AI marketing plan (see [Generate a Marketing Plan](./generate-and-publish-marketing-plan.md)) all appear on the social posts hub.
|
|
26
|
+
|
|
27
|
+
## Email Marketing Pages (Email Marketing)
|
|
28
|
+
|
|
29
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Email marketing home | `email-marketing` | Email marketing hub |
|
|
32
|
+
| My campaigns | `email-marketing/my-campaigns` | All email campaigns (sent, scheduled, drafts) |
|
|
33
|
+
| Campaign templates | `email-marketing/template-list` | Start a campaign from a template |
|
|
34
|
+
| Campaign analytics | `email-marketing/analytics` | Campaign statistics |
|
|
35
|
+
|
|
36
|
+
## Pairing Entities with Their Read APIs
|
|
37
|
+
|
|
38
|
+
Fetch the entity via REST, then link the matching dashboard page. All calls use `https://www.wixapis.com` with an `Authorization` header.
|
|
39
|
+
|
|
40
|
+
| Entity | Read API | Dashboard link |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| Social post (item) | Publisher API Item — created via `POST /social-publisher/v1/items`, published/scheduled via `POST /social-publisher/v1/publish-by-id` | `social-marketing-web` |
|
|
43
|
+
| Connected social account | `GET /social-publisher/v1/accounts?channelName={CHANNEL}` | `social-marketing-web` |
|
|
44
|
+
| Marketing-plan post | `GET /promote/marketing-plan-service/v1/marketing-plan?timeframe.startDate=...&timeframe.endDate=...` · `POST /promote/marketing-plan-service/v1/marketing-activity-posts` | `social-marketing-web` (scheduled posts land on the hub) |
|
|
45
|
+
| Email campaign | `GET /email-marketing/v1/campaigns` · `GET /email-marketing/v1/campaigns/{campaignId}` | `email-marketing/my-campaigns` |
|
|
46
|
+
|
|
47
|
+
Example — after scheduling a social post, hand back the hub link:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Scheduled your Instagram post for tomorrow 9:00.
|
|
51
|
+
See it here: https://manage.wix.com/dashboard/{metaSiteId}/social-marketing-web
|
|
52
|
+
```
|
|
@@ -26,7 +26,87 @@ Wix Pricing Plans includes Plans that allows Wix users to build a customized mem
|
|
|
26
26
|
Before proceeding to further steps I must read the following [documentation](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/introduction) on how to form request to pricing plans API.
|
|
27
27
|
|
|
28
28
|
### 1. Create a pricing plan
|
|
29
|
-
|
|
29
|
+
Create plans with the [Create Plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plans-v3/create-plan) endpoint: `POST https://www.wixapis.com/pricing-plans/v3/plans`.
|
|
30
|
+
|
|
31
|
+
Prerequisites: the site must have the Wix Pricing Plans app installed, and a site currency must be
|
|
32
|
+
set — Create Plan returns `404 CURRENCY_MISSING` when the currency isn't set in site settings.
|
|
33
|
+
|
|
34
|
+
#### Required request fields
|
|
35
|
+
|
|
36
|
+
Send all of these on every create request. Two of them are easy to miss, so check them before
|
|
37
|
+
sending:
|
|
38
|
+
|
|
39
|
+
| Field | Notes |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| `plan.status` | Set to `"ACTIVE"`. **The generated Create Plan method schema does not list this field, but the server requires it.** Omitting it returns `400` with `plan.status: value is required` (`REQUIRED_FIELD`). The code examples on the Create Plan article all include it. |
|
|
42
|
+
| `plan.visibility` | `"PUBLIC"` or `"PRIVATE"`. |
|
|
43
|
+
| `plan.pricingVariants[].id` | **You must generate this GUID yourself — it is not server-assigned.** This is unusual for a create call, and it's the most common cause of a failed first attempt. Omitting it returns `400` with `plan.pricingVariants[0].id: is not a valid GUID` and `must not be empty`. Generate a fresh UUID per variant. |
|
|
44
|
+
| `plan.pricingVariants[].name` | Variant name, e.g. `"Monthly"` or the plan name for a single-variant plan. |
|
|
45
|
+
| `plan.pricingVariants[].billingTerms.startType` | `"ON_PURCHASE"` or `"CUSTOM"`. |
|
|
46
|
+
| `plan.pricingVariants[].billingTerms.endType` | `"UNTIL_CANCELLED"` or `"CYCLES_COMPLETED"`. With `CYCLES_COMPLETED`, also send `billingTerms.cyclesCompletedDetails.billingCycleCount`. |
|
|
47
|
+
| `plan.pricingVariants[].pricingStrategies[]` | Exactly one strategy. Use `flatRate.amount` as a decimal **string**, e.g. `"0"` or `"5.99"`. |
|
|
48
|
+
|
|
49
|
+
`pricingVariants` is currently limited to one variant per plan.
|
|
50
|
+
|
|
51
|
+
#### Minimal free plan
|
|
52
|
+
|
|
53
|
+
This is the complete minimal body for a free plan — copy it and change the names and the variant
|
|
54
|
+
GUID:
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
async function() {
|
|
58
|
+
return await wix.request({
|
|
59
|
+
method: 'POST',
|
|
60
|
+
url: 'https://www.wixapis.com/pricing-plans/v3/plans',
|
|
61
|
+
body: {
|
|
62
|
+
plan: {
|
|
63
|
+
name: 'Free Tier',
|
|
64
|
+
visibility: 'PUBLIC',
|
|
65
|
+
status: 'ACTIVE',
|
|
66
|
+
buyable: true,
|
|
67
|
+
buyerCanCancel: true,
|
|
68
|
+
pricingVariants: [
|
|
69
|
+
{
|
|
70
|
+
id: '7a3f1e2d-4b5c-6d7e-8f9a-0b1c2d3e4f5a', // generate a fresh GUID
|
|
71
|
+
name: 'Free Tier',
|
|
72
|
+
pricingStrategies: [{ flatRate: { amount: '0' } }],
|
|
73
|
+
billingTerms: {
|
|
74
|
+
startType: 'ON_PURCHASE',
|
|
75
|
+
endType: 'UNTIL_CANCELLED'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Do **not** add a `billingCycle` to a free plan: a free plan can't be recurring, and the server
|
|
86
|
+
rejects that combination with `400 FREE_PRICING_VARIANT_IS_NOT_RECURRING`.
|
|
87
|
+
|
|
88
|
+
#### Other plan types
|
|
89
|
+
|
|
90
|
+
Same required fields; only `billingTerms` and the `flatRate.amount` change.
|
|
91
|
+
|
|
92
|
+
| Plan type | `billingTerms` |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| Free, open-ended | Omit `billingCycle`; `endType: "UNTIL_CANCELLED"`. `flatRate.amount: "0"`. |
|
|
95
|
+
| One-time payment, fixed duration | `billingCycle` = the duration (e.g. `{ period: 'MONTH', count: 1 }`), `endType: "CYCLES_COMPLETED"`, `cyclesCompletedDetails.billingCycleCount: 1`. |
|
|
96
|
+
| Recurring, until cancelled | `billingCycle` = the recurrence (e.g. `{ period: 'MONTH', count: 1 }`), `endType: "UNTIL_CANCELLED"`. |
|
|
97
|
+
|
|
98
|
+
A `billingCycle` can't be shorter than 7 days, and total plan duration can't exceed 10 years
|
|
99
|
+
(`400 VALID_BILLING_CYCLE` / `400 VALID_PLAN_DURATION`).
|
|
100
|
+
|
|
101
|
+
Two more optional fields worth knowing:
|
|
102
|
+
|
|
103
|
+
- **Purchase caps.** In V3 these are `plan.purchaseLimits`, an array of
|
|
104
|
+
`{ type, maxCount }`. `type` is one of `PER_MEMBER_LIFETIME`, `PER_MEMBER_ACTIVE`,
|
|
105
|
+
`TOTAL_ACTIVE`, `TOTAL_SOLD`. To make a plan available only once per member, send
|
|
106
|
+
`purchaseLimits: [{ type: 'PER_MEMBER_LIFETIME', maxCount: 1 }]`. Some Create Plan examples still
|
|
107
|
+
use the V2-era `maxPurchasesPerBuyer` field; `purchaseLimits` is the V3 equivalent.
|
|
108
|
+
- **Free trials.** `pricingVariants[].freeTrialDays` only applies to recurring *paid* plans — using
|
|
109
|
+
it on a free plan returns `400 FREE_TRIAL_IS_APPLICABLE`.
|
|
30
110
|
|
|
31
111
|
### 2. Attach integrating app entity to pricing plans
|
|
32
112
|
|
|
@@ -69,6 +149,24 @@ Each item in the request for this endpoint must adhere to these rules:
|
|
|
69
149
|
- `itemSetId` must set to the created pool definition benefit item set id.
|
|
70
150
|
- `externalId` must be set to the integrating app entity id, example: booking service id or blog post id.
|
|
71
151
|
|
|
152
|
+
### 3. Stop offering a plan — archive it, don't delete it
|
|
153
|
+
|
|
154
|
+
When the user asks to archive, retire, or stop offering a plan, **archive** it so existing
|
|
155
|
+
subscribers and order history are preserved. Archiving is an Update Plan call — there is no
|
|
156
|
+
separate archive endpoint, and Delete Plan is not the same thing:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
curl -X PATCH \
|
|
160
|
+
'https://www.wixapis.com/pricing-plans/v3/plans/<PLAN_ID>' \
|
|
161
|
+
-H 'Authorization: <AUTH>' \
|
|
162
|
+
-H 'Content-Type: application/json' \
|
|
163
|
+
-d '{ "plan": { "id": "<PLAN_ID>", "revision": "<CURRENT_REVISION>", "archived": true } }'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Carry the plan's current `revision` or the update is rejected. `archived` is not listed in the
|
|
167
|
+
generated Plan object reference, so it cannot be found by reading the schema — reach for it
|
|
168
|
+
directly rather than searching for an archive method or falling back to Delete Plan.
|
|
169
|
+
|
|
72
170
|
## Pricing plans REST API Documentation Reference
|
|
73
171
|
- [Create plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plans-v3/create-plan)
|
|
74
172
|
- [Get plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plans-v3/get-plan)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Pricing Plans Dashboard Navigation"
|
|
3
|
+
description: "Builds direct links to Wix Pricing Plans dashboard pages on manage.wix.com — plans list, create a plan, edit a plan, record a manual order, and settings. Pairs each main Pricing Plans entity (plan, order) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pricing Plans Dashboard Navigation
|
|
7
|
+
|
|
8
|
+
Build direct links into the Wix Pricing Plans pages of a site's dashboard. For the general URL contract (metaSiteId, fallbacks, redirects), see [Dashboard Navigation](../dashboard-navigation/dashboard-navigation.md).
|
|
9
|
+
|
|
10
|
+
All Wix Pricing Plans (app ID `1522827f-c56c-a5c9-2ac9-00f9e6ae12d3`) pages live under:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
https://manage.wix.com/dashboard/{metaSiteId}/pricing-plans/{route}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Main Pages
|
|
17
|
+
|
|
18
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Plans list | `pricing-plans` | All pricing plans; purchases (orders/subscriptions) are a tab of this page |
|
|
21
|
+
| Create plan | `pricing-plans/new` | New plan form |
|
|
22
|
+
| Edit plan | `pricing-plans/edit` | A specific plan — reached from the plans list (no documented ID path segment) |
|
|
23
|
+
| New manual order | `pricing-plans/new-order` | Record a manual (offline) plan order for a member |
|
|
24
|
+
| Settings | `pricing-plans/settings` | Pricing Plans settings |
|
|
25
|
+
|
|
26
|
+
There is no separate route for the purchases list — it is a tab of the main `pricing-plans` page.
|
|
27
|
+
|
|
28
|
+
Older `membership...` links (`membership`, `paid-plans`, `membership/setup`, `membership/orders/new`, `membership-settings`) redirect to the current routes.
|
|
29
|
+
|
|
30
|
+
## Pairing Entities with Their Read APIs
|
|
31
|
+
|
|
32
|
+
Fetch the entity via REST, then link the matching dashboard page. All calls use `https://www.wixapis.com` with an `Authorization` header.
|
|
33
|
+
|
|
34
|
+
| Entity | Read API | Dashboard link |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Plan | `POST /pricing-plans/v3/plans/query` · `GET /pricing-plans/v3/plans/{planId}` | `pricing-plans` (list) or `pricing-plans/edit` (opened from the list) |
|
|
37
|
+
| Order (subscription/purchase) | `GET /pricing-plans/v2/orders` · `GET /pricing-plans/v2/orders/{id}` | `pricing-plans` (purchases tab) |
|
|
38
|
+
| Settings | Pricing Plans Settings API (Get Pricing Plans Settings) | `pricing-plans/settings` |
|
|
39
|
+
|
|
40
|
+
Example — after creating a plan, hand back the plans page:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Created "Gold Membership".
|
|
44
|
+
Manage it here: https://manage.wix.com/dashboard/{metaSiteId}/pricing-plans
|
|
45
|
+
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Restaurants Dashboard Navigation"
|
|
3
|
+
description: "Builds direct links to Wix Restaurants dashboard pages on manage.wix.com — menus, menu items, the online orders board, online-ordering fulfillment settings (pickup, delivery, dine-in), the reservations list, floor plans, and reservation experience settings. Pairs each main Restaurants entity (menu, section, item, order, reservation) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Restaurants Dashboard Navigation
|
|
7
|
+
|
|
8
|
+
Build direct links into the restaurant pages of a site's dashboard. For the general URL contract (metaSiteId, fallbacks, redirects), see [Dashboard Navigation](../dashboard-navigation/dashboard-navigation.md).
|
|
9
|
+
|
|
10
|
+
Restaurant pages are split across **three apps** with three URL namespaces:
|
|
11
|
+
|
|
12
|
+
- **Wix Restaurants Menus** (`b278a256-2757-4f19-9313-c05c783bec92`) — menus, sections, items. Routes under `wix-restaurants-menus-new/`.
|
|
13
|
+
- **Wix Restaurants Orders** (`9a5d83fd-8570-482e-81ab-cfa88942ee60`) — online orders board and online-ordering settings. Routes under `wix-restaurants-orders-new/`.
|
|
14
|
+
- **Wix Table Reservations** (`f9c07de2-5341-40c6-b096-8eb39de391fb`) — reservations, floor plans, reservation experiences. Routes under `wix-table-reservations/`.
|
|
15
|
+
|
|
16
|
+
Older links (`restaurants/menus-management`, `restaurants/table-reservations`, `restaurants-orders-prep-board`, `olo-settings/...`) redirect to the current routes.
|
|
17
|
+
|
|
18
|
+
## Menus Pages (Wix Restaurants Menus)
|
|
19
|
+
|
|
20
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Menus | `wix-restaurants-menus-new` | All menus (and their sections) |
|
|
23
|
+
| Edit menu | `wix-restaurants-menus-new/menu/{menuId}` | A specific menu |
|
|
24
|
+
| Items | `wix-restaurants-menus-new/items` | All menu items |
|
|
25
|
+
| Menu printing | `wix-restaurants-menus-new/menus-printing` | Print-ready menu export |
|
|
26
|
+
|
|
27
|
+
## Orders Pages (Wix Restaurants Orders)
|
|
28
|
+
|
|
29
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Orders board | `wix-restaurants-orders-new` | Incoming online orders (prep board) |
|
|
32
|
+
| Online orders settings | `wix-restaurants-orders-new/settings` | Online-ordering settings hub |
|
|
33
|
+
|
|
34
|
+
Fulfillment and ordering sub-settings live at `wix-restaurants-orders-new/settings/{subpage}`: `pickup`, `delivery`, `pickup-delivery`, `dine-in`, `closure-dates`, `scheduling-page`, `service-fee`, `printing`, `doordash`.
|
|
35
|
+
|
|
36
|
+
## Reservations Pages (Wix Table Reservations)
|
|
37
|
+
|
|
38
|
+
| Page | URL after `/dashboard/{metaSiteId}/` | What it manages |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Reservations list | `wix-table-reservations/table-reservations` | All table reservations |
|
|
41
|
+
| Floor plan view | `wix-table-reservations/floor-plan-view` | Live floor-plan view of reservations |
|
|
42
|
+
| Floor plan editor | `wix-table-reservations/floor-plan` | Table layout (floor plan) |
|
|
43
|
+
| Create experience | `wix-table-reservations/create-experience` | New reservation experience |
|
|
44
|
+
| Experience settings | `wix-table-reservations/experience` | A reservation experience (seating rules, policies) |
|
|
45
|
+
|
|
46
|
+
Experience sub-settings live at `wix-table-reservations/experience/{subpage}`: `details`, `schedule`, `reservation-form`, `reservation-settings`, `table-assignment`, `polices`.
|
|
47
|
+
|
|
48
|
+
## Pairing Entities with Their Read APIs
|
|
49
|
+
|
|
50
|
+
Fetch the entity via REST, then link the matching dashboard page. All calls use `https://www.wixapis.com` with an `Authorization` header.
|
|
51
|
+
|
|
52
|
+
| Entity | Read API | Dashboard link |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| Menu | `POST /restaurants/menus-menu/v1/menus/query` · `GET /restaurants/menus-menu/v1/menus` | `wix-restaurants-menus-new/menu/{menuId}` (edit) or `wix-restaurants-menus-new` (list) |
|
|
55
|
+
| Section | `POST /restaurants/menus-section/v1/sections/query` | `wix-restaurants-menus-new` (sections are managed inside their menu) |
|
|
56
|
+
| Item | `POST /restaurants/menus-item/v1/items/query` | `wix-restaurants-menus-new/items` |
|
|
57
|
+
| Order | `POST /ecom/v1/orders/search` · `GET /ecom/v1/orders/{orderId}` | `wix-restaurants-orders-new` (board) or `ecom-platform/order-details/{orderId}` |
|
|
58
|
+
| Reservation | `POST /table-reservations/reservations/v1/reservations/query` · `GET /table-reservations/reservations/v1/reservations/{reservationId}` | `wix-table-reservations/table-reservations` |
|
|
59
|
+
| Reservation location (settings) | `POST /table-reservations/reservation-locations/v1/reservation-locations/query` | `wix-table-reservations/experience` |
|
|
60
|
+
|
|
61
|
+
Restaurant online orders are eCommerce orders (their `lineItems[].catalogReference.appId` is `9a5d83fd-8570-482e-81ab-cfa88942ee60`), so they can also be read and linked through the eCommerce orders pages.
|
|
62
|
+
|
|
63
|
+
Example — after creating a menu, hand back its edit link:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Created "Dinner Menu".
|
|
67
|
+
Manage it here: https://manage.wix.com/dashboard/{metaSiteId}/wix-restaurants-menus-new/menu/{menuId}
|
|
68
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "Wix Restaurants Setup"
|
|
3
|
-
description: Configures restaurant menus, sections, and items using Menus API. Covers menu structure (Menu → Section → Item),
|
|
3
|
+
description: Configures restaurant menus, sections, and items using Menus API. Covers menu structure (Menu → Section → Item), the two-step item modifier / modifier group flow, pricing, availability schedules, and ordering settings.
|
|
4
4
|
---
|
|
5
5
|
# Wix Restaurants Setup API Reference
|
|
6
6
|
|
|
@@ -16,6 +16,7 @@ This recipe covers setting up and configuring Wix Restaurants using the REST API
|
|
|
16
16
|
- **Menus API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/menus/create-menu)
|
|
17
17
|
- **Menu Items API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/items/items/create-item)
|
|
18
18
|
- **Menu Sections API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/sections/create-section)
|
|
19
|
+
- **Item Modifiers API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/items/item-modifiers/create-modifier)
|
|
19
20
|
- **Item Modifier Groups API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/items/item-modifier-groups/create-modifier-group)
|
|
20
21
|
- **Item Variants API**: [REST](https://dev.wix.com/docs/api-reference/business-solutions/restaurants/menus/items/item-variants/bulk-create-variants)
|
|
21
22
|
|
|
@@ -70,32 +71,8 @@ Wix Restaurants uses a hierarchical structure:
|
|
|
70
71
|
}
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// Section 1: Appetizers
|
|
76
|
-
{
|
|
77
|
-
"section": {
|
|
78
|
-
"name": "Appetizers",
|
|
79
|
-
"sortOrder": 1
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Section 2: Main Courses
|
|
84
|
-
{
|
|
85
|
-
"section": {
|
|
86
|
-
"name": "Main Courses",
|
|
87
|
-
"sortOrder": 2
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Section 3: Desserts
|
|
92
|
-
{
|
|
93
|
-
"section": {
|
|
94
|
-
"name": "Desserts",
|
|
95
|
-
"sortOrder": 3
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
```
|
|
74
|
+
Repeat per section, incrementing `sortOrder`, or create them all at once with the bulk endpoint
|
|
75
|
+
in Step 7.
|
|
99
76
|
|
|
100
77
|
## Step 3: Create Menu Items
|
|
101
78
|
|
|
@@ -115,6 +92,9 @@ Create multiple sections:
|
|
|
115
92
|
}
|
|
116
93
|
```
|
|
117
94
|
|
|
95
|
+
`modifierGroups` holds objects referencing existing modifier groups —
|
|
96
|
+
`[{ "id": "<MODIFIER_GROUP_ID>" }]`. Leave it empty until the groups exist (Step 5).
|
|
97
|
+
|
|
118
98
|
## Step 4: Add Items to Sections
|
|
119
99
|
|
|
120
100
|
**Endpoint**: `PATCH https://www.wixapis.com/restaurants/menus-section/v1/sections/{sectionId}`
|
|
@@ -133,86 +113,103 @@ Each section update requires the latest section `revision`.
|
|
|
133
113
|
|
|
134
114
|
## Step 5: Configure Item Options and Modifiers
|
|
135
115
|
|
|
136
|
-
|
|
116
|
+
A modifier group (e.g. "Cooking Temperature", "Toppings") holds a set of individual choices and
|
|
117
|
+
the selection rule that governs them. **The choices are separate entities** — a modifier group
|
|
118
|
+
does not contain inline options. Creating a group therefore takes two calls, in this order:
|
|
137
119
|
|
|
138
|
-
|
|
120
|
+
1. Create one **item modifier** per choice (Item Modifiers API) and keep each returned `id`.
|
|
121
|
+
2. Create the **modifier group** (Item Modifier Groups API), referencing those IDs.
|
|
122
|
+
|
|
123
|
+
Do both calls; a group created without step 1 comes back with an empty `modifiers` array and no
|
|
124
|
+
choices are saved.
|
|
125
|
+
|
|
126
|
+
### Step 5a: Create each item modifier
|
|
127
|
+
|
|
128
|
+
**Endpoint**: `POST https://www.wixapis.com/restaurants/item-modifiers/v1/modifiers`
|
|
129
|
+
|
|
130
|
+
Only `modifier.name` is required.
|
|
139
131
|
|
|
140
132
|
```json
|
|
141
133
|
{
|
|
142
134
|
"modifier": {
|
|
143
|
-
"name": "
|
|
144
|
-
"
|
|
145
|
-
"minSelections": 1,
|
|
146
|
-
"maxSelections": 1,
|
|
147
|
-
"options": [
|
|
148
|
-
{
|
|
149
|
-
"name": "Rare",
|
|
150
|
-
"price": {
|
|
151
|
-
"amount": "0",
|
|
152
|
-
"currency": "USD"
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"name": "Medium Rare",
|
|
157
|
-
"price": {
|
|
158
|
-
"amount": "0",
|
|
159
|
-
"currency": "USD"
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"name": "Medium",
|
|
164
|
-
"price": {
|
|
165
|
-
"amount": "0",
|
|
166
|
-
"currency": "USD"
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"name": "Well Done",
|
|
171
|
-
"price": {
|
|
172
|
-
"amount": "0",
|
|
173
|
-
"currency": "USD"
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
]
|
|
135
|
+
"name": "Extra Cheese",
|
|
136
|
+
"type": "MODIFIER"
|
|
177
137
|
}
|
|
178
138
|
}
|
|
179
139
|
```
|
|
180
140
|
|
|
181
|
-
|
|
141
|
+
The response returns the new `modifier.id`. Repeat per choice, collecting the IDs.
|
|
142
|
+
|
|
143
|
+
### Step 5b: Create the modifier group
|
|
144
|
+
|
|
145
|
+
**Endpoint**: `POST https://www.wixapis.com/restaurants/item-modifier-group/v1/modifier-groups`
|
|
146
|
+
|
|
147
|
+
The request body's top-level field is **`modifierGroup`**. Sending `modifier` instead is rejected
|
|
148
|
+
with `400 modifierGroup must not be empty` (`violatedRule: REQUIRED_FIELD`).
|
|
149
|
+
|
|
150
|
+
Required: `modifierGroup` and `modifierGroup.name`.
|
|
151
|
+
|
|
182
152
|
```json
|
|
183
153
|
{
|
|
184
|
-
"
|
|
185
|
-
"name": "
|
|
186
|
-
"
|
|
187
|
-
"minSelections": 0,
|
|
188
|
-
"maxSelections": 5,
|
|
189
|
-
"options": [
|
|
154
|
+
"modifierGroup": {
|
|
155
|
+
"name": "Toppings",
|
|
156
|
+
"modifiers": [
|
|
190
157
|
{
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"amount": "2.00",
|
|
194
|
-
"currency": "USD"
|
|
195
|
-
}
|
|
158
|
+
"id": "<ITEM_MODIFIER_ID_1>",
|
|
159
|
+
"additionalChargeInfo": { "additionalCharge": "2.00" }
|
|
196
160
|
},
|
|
197
161
|
{
|
|
198
|
-
"
|
|
199
|
-
"
|
|
200
|
-
"amount": "3.00",
|
|
201
|
-
"currency": "USD"
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"name": "Avocado",
|
|
206
|
-
"price": {
|
|
207
|
-
"amount": "2.50",
|
|
208
|
-
"currency": "USD"
|
|
209
|
-
}
|
|
162
|
+
"id": "<ITEM_MODIFIER_ID_2>",
|
|
163
|
+
"additionalChargeInfo": { "additionalCharge": "0.00" }
|
|
210
164
|
}
|
|
211
|
-
]
|
|
165
|
+
],
|
|
166
|
+
"rule": {
|
|
167
|
+
"required": false,
|
|
168
|
+
"minSelections": 0,
|
|
169
|
+
"maxSelections": 5
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
For a mandatory single-choice group (e.g. cooking temperature) use the same shape with
|
|
176
|
+
`"rule": { "required": true, "minSelections": 1, "maxSelections": 1 }`.
|
|
177
|
+
|
|
178
|
+
**Field reference** for `modifierGroup`:
|
|
179
|
+
|
|
180
|
+
| Field | Notes |
|
|
181
|
+
|-------|-------|
|
|
182
|
+
| `name` | Required. The group's display name. |
|
|
183
|
+
| `modifiers[].id` | ID of an existing item modifier from Step 5a — not a name. Up to 500. |
|
|
184
|
+
| `modifiers[].additionalChargeInfo.additionalCharge` | That choice's surcharge, a decimal string (`"2.00"`). No `currency` field — the site currency is used. |
|
|
185
|
+
| `modifiers[].preSelected` | Optional boolean; selects the choice by default. |
|
|
186
|
+
| `rule.required` | Whether the customer must choose. Named `required`, not `mandatory`. |
|
|
187
|
+
| `rule.minSelections` / `rule.maxSelections` | Integers bounding how many choices are allowed. |
|
|
188
|
+
|
|
189
|
+
There is no `options` field and no per-option `price` object.
|
|
190
|
+
|
|
191
|
+
### Step 5c: Attach the group to an item
|
|
192
|
+
|
|
193
|
+
A modifier group only reaches customers once an item references it. The item's `modifierGroups`
|
|
194
|
+
is an array of **objects carrying an `id`**, not bare ID strings.
|
|
195
|
+
|
|
196
|
+
**Endpoint**: `PATCH https://www.wixapis.com/restaurants/menus-item/v1/items/{itemId}`
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"item": {
|
|
201
|
+
"id": "<ITEM_ID>",
|
|
202
|
+
"revision": "<ITEM_REVISION>",
|
|
203
|
+
"modifierGroups": [{ "id": "<MODIFIER_GROUP_ID>" }]
|
|
212
204
|
}
|
|
213
205
|
}
|
|
214
206
|
```
|
|
215
207
|
|
|
208
|
+
To create modifier groups in bulk, use
|
|
209
|
+
`POST https://www.wixapis.com/restaurants/menus/v1/bulk/modifier-groups/create` and
|
|
210
|
+
`POST https://www.wixapis.com/restaurants/menus/v1/bulk/modifiers/create`; the per-entity body
|
|
211
|
+
shape is the same.
|
|
212
|
+
|
|
216
213
|
## Step 6: Set Menu Structure (Attach Sections to Menu)
|
|
217
214
|
|
|
218
215
|
Attach section IDs to a menu. This call requires the latest menu `revision`.
|
|
@@ -265,39 +262,18 @@ Use query APIs for retrieval and UI display flows.
|
|
|
265
262
|
}
|
|
266
263
|
```
|
|
267
264
|
|
|
268
|
-
## Query Menus
|
|
269
|
-
|
|
270
|
-
**Endpoint**: `GET https://www.wixapis.com/restaurants/menus-menu/v1/menus`
|
|
271
|
-
|
|
272
|
-
**Response**:
|
|
273
|
-
```json
|
|
274
|
-
{
|
|
275
|
-
"menus": [
|
|
276
|
-
{
|
|
277
|
-
"id": "menu-1",
|
|
278
|
-
"name": "Breakfast Menu",
|
|
279
|
-
"visible": true,
|
|
280
|
-
"sections": [...]
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
"id": "menu-2",
|
|
284
|
-
"name": "Lunch Menu",
|
|
285
|
-
"visible": true,
|
|
286
|
-
"sections": [...]
|
|
287
|
-
}
|
|
288
|
-
]
|
|
289
|
-
}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
265
|
## Recommended Setup Order
|
|
293
266
|
|
|
294
267
|
For complex restaurant menus, use this order to avoid dependency issues:
|
|
295
268
|
|
|
296
269
|
1. Create variants (sizes/options) if needed.
|
|
297
|
-
2. Create
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
270
|
+
2. Create item modifiers, then group them into modifier groups (Step 5) if the items need
|
|
271
|
+
customization options.
|
|
272
|
+
3. Create items (single or bulk).
|
|
273
|
+
4. Create sections (single or bulk).
|
|
274
|
+
5. Update each section with `itemIds`.
|
|
275
|
+
6. Update menu with `sectionIds`.
|
|
276
|
+
7. Update items with `modifierGroups` to attach the groups from step 2.
|
|
301
277
|
|
|
302
278
|
## Item Labels
|
|
303
279
|
|
|
@@ -311,15 +287,6 @@ Common dietary labels:
|
|
|
311
287
|
- `spicy`
|
|
312
288
|
- `chef-recommendation`
|
|
313
289
|
|
|
314
|
-
## Best Practices
|
|
315
|
-
|
|
316
|
-
1. **High-Quality Images**: Use appetizing food photography
|
|
317
|
-
2. **Clear Descriptions**: Include ingredients and preparation methods
|
|
318
|
-
3. **Accurate Pricing**: Keep prices up-to-date
|
|
319
|
-
4. **Stock Management**: Update availability in real-time
|
|
320
|
-
5. **Modifier Organization**: Group related customizations logically
|
|
321
|
-
6. **Menu Structure**: Organize sections in logical dining order
|
|
322
|
-
|
|
323
290
|
## Error Handling
|
|
324
291
|
|
|
325
292
|
| Error | Cause | Solution |
|
|
@@ -327,6 +294,8 @@ Common dietary labels:
|
|
|
327
294
|
| `MENU_NOT_FOUND` | Invalid menu ID | Verify menu exists |
|
|
328
295
|
| `ITEM_NOT_FOUND` | Invalid item ID | Verify item exists |
|
|
329
296
|
| `INVALID_PRICE` | Negative price | Use positive amounts |
|
|
297
|
+
| `400 modifierGroup must not be empty` | Request body wrapped the group in `modifier` instead of `modifierGroup` | Use `modifierGroup` as the top-level field (Step 5b) |
|
|
298
|
+
| Group created but `modifiers` is `[]` | Choices were sent inline (e.g. an `options` array) instead of as item modifier IDs | Create item modifiers first, then reference their IDs in `modifiers[].id` (Step 5a → 5b) |
|
|
330
299
|
|
|
331
300
|
## Related Documentation
|
|
332
301
|
|